https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 풀이법: 1) 문제 설명에 나와있는 단계 그대로 풀면 끝이다... Comment: 1) 재귀 말곤 특이사항이 없는 문제 class Solution { public static String solution(String p) { if(p.isEmpty()) return ""; if(isBalanced(p) && isValid(p)) return p; StringBui..
https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이법: 1) courses에서 코스 구성 메뉴 개수 하나 씩 꺼내온다. 2) 각 손님이 시킨 오더 목록마다 코스 메뉴 개수만큼 이루어진 조합 다 구하고 hashmap에 조합 출현횟수 카운팅. 3) 모든 손님 오더 목록 다 돌고 나면 내림차순으로 정렬. 4) 제일 많이 출현한 조합 답 리스트에 추가. 5) courses 다 돌 때까지 1~4 반복. Comment:..
https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 풀이법: 기본적인 문자열 처리 문제다. 정규 표현식(Regex)을 알면 쉽게 풀 수 있는 문제 (정규표현식 정리) Comment: 처음엔 각 단계별로 확인하려고 각 단계를 String 반환형으로 구현하고 println 때렸는데 Builder 패턴 쓰는게 가독성 훨씬 좋아 보인다. 풀다가 정리가 좀 필요했던 내용 1) Builder Pattern 2) 정규..
WORA란 무엇인가? Write once, run anywhere(WORA), 또는 Write once, run everywhere (WORE)은 말 그대로 한 번 작성한 코드를 OS에 종속적이지 않고 어디서든 실행시킬 수 있다는 Java의 특징이다. Sun Microsystems (현 Oracle 소속)에서 Java 언어의 장점을 어필하기 위해 슬로건으로 내세웠다. 즉 Java 프로그램은 어디서든 개발이 가능하고, 어느 디바이스에서도 표준 바이트코드로 컴파일이 되고 JVM이 탑재되어있는 기기라면 어디서든 실행가능하다는 것이 WORA의 본 의미였다. 예를 들면 개발자가 PC에서 개발한 코드를 JVM이 있는 핸드폰, 라우터, 메인프레임 서버 등 여러 곳에서 실행시키는 것이다. (이런 아이디어는 1960년대..
다루는 내용 1. JVM이란 무엇인가 2. JVM의 구성요소 JVM이란 무엇인가 Java Virtual Machine (JVM)은 Java 또는 다른 언어들로 작성된 프로그램을 실행할 수 있도록 하는 가상머신이다. Java는 WORA(Write Once Run Anywhere: 한번 작성된 코드를 수정없이 어디서든 실행할 수 있다) 하도록 설계된 언어인데, 환경과 관계없이 실행될 수 있도록 하드웨어 위에 JVM이라는 가상머신이 있는 것이다. (Java는 정말 WORA할까?) JVM은 Java를 비롯한 여러 프로그래밍 언어(Kotlin, Groovy, 등)로 작성된 바이트코드를 해석하고 실행한다. (바이트코드란 무엇인가) JVM 구성요소 1) 클래스로더 2) 런타임데이터 영역 3) 실행엔진 클래스로더 클래..
1. 탄생배경 연결리스트에 대한 첫 언급은 1955-1956년에 개발된 IPL이라는 언어의 기본 자료구조로 등장한다. 이 IPL은 복잡한 수식을 증명하는 용도로 개발이 되었는데 간단히 설명하자면 이 언어에서 사용되는 변수들의 계층을 나누기 위해서 사용된 것으로 보인다. 어떤 변수들은 그 스코프가 전역적이고 또 어떤 특정 변수들은 스코프가 내부적으로 이루어져 있는데 이 각 값들을 어떤 변수의 이름으로 접근할 수 있도록 연결 리스트가 사용되었다고 한다. 2. 연결 리스트란 무엇인가? 정의: 한 줄로 연결되어 있는 방식으로 어떤 데이터 덩어리(이하 노드Node)를 저장할 때 그 다음 순서의 자료가 있는 위치를 데이터에 포함시키는 방식으로 자료를 저장한다. 즉 리스트의 순서가 메모리에서의 실제 저장 위치에서는 ..
1. 탄생 배경 배열은 가장 오래된 자료구조 중 하나로써 특정 탄생 시기나 배경에 대한 정확한 기록을 찾기 어려웠다. 추정컨대 배열이라는 개념을 어느 시점에 누가 처음으로 만들어내서 지금까지 쓰고 있다기 보다는 이전부터 일렬로 데이터를 저장해서 읽고 쓰는 것이 매우 기초적인 행위이기 때문에 배경을 찾는 의미가 없는 건 아닐까 싶다. 저장장치가 생기기 전의 컴퓨터에서 사용한 테이프 (magnetic tape나 구멍 뚫린 종이 테이프)도 아주 넓은 의미에서 배열의 범주 안에 들어간다고도 할 수 있지 않을까? 그만큼 일렬로 데이터를 저장하는 방식은 매우 보편적인 아이디어 같다. 다만 direct access가 가능한 배열은 컴퓨터 하드웨어에 내장 메모리가 등장하기 시작하면서 우리가 현재 아는 배열의 개념이 정..
이번 글에서 정리하는 내용: 1. Boxing, unboxing, auto-boxing, auto-unboxing 2. Wrapper은 왜 생긴 걸까? 3. OOP를 추구하는 자바 언어 에선 Wrapper 클래스가 있는데 그럼 왜 primitive 자료형이 있는걸까? 2학년 시절 객체라는 개념이 잡히지 않았을 때 대충 같은거겠지 하면서 Wrapper, Primitive 구분하지 않고 막 썼다. 그러다가 여러차례 자바로 프로젝트를 하면서 객체란 대충 이런 구조로 작동하는구나 경험적으로 알아가던 중 평소엔 별 생각없이 넘어가던 부분이 매우 낯설게 보였다. Integer instInt = 1; 이게 도대체 왜 되는거지? Integer은 Object인데 왜 new를 하지 않고도 사용할 수 있는걸까? 궁금증을 풀..
- Total
- Today
- Yesterday
- nginx 내부
- 카카오 인턴
- 신규 아이디 추천
- 2019 Kakao Blind
- digital tree
- okhttp3
- Java
- WORE
- Kakao Blind
- behavior parameterization
- PatternSyntaxException
- 카카오
- 디자인패턴
- 카카오코테
- KAKAO 2021
- jvm
- 모던 자바 인 액션
- 프로그래밍 모델
- 2021
- 코테
- IOC
- WORA
- 2020 KAKAO
- trie 소스코드
- 스프링
- Java #JIT #JVM
- 스프링 컨테이너
- 카카오 코테
- Java #GC #가비지콜렉터 #Garbage Collector
- decorator
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |