![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/PcyUW/btrtIloveLS/wySYnarR61ymKdEpLJN9T0/img.jpg)
이 글은 서적과 백기선님의 강의를 토대로 작성된 내용입니다.동작 파라미터화 (behavior parameterization)란?에서는 동작 파라미터화를 "아직 어떻게 실행할 것인지 결정하지 않은 코드 블록" 이라고 정의한다. 용어 자체도 직관성이 떨어지고 정의 자체도 자세한 설명을 듣기 전엔 너무 모호해서 이해하는데 한참이 걸렸다. 내가 이해한 동작 파라미터화는 특정 코드 블록이 어떻게 실행될지에 대한 디테일(동작)은 파라미터에 담아서 넘긴 후(파라미터화) 나중에 가서 자세하게 구현하는 행위이다. 그렇다면 왜 디테일을 나중으로 미루자고 하는 것일까? 바로 개발을 하면서 요구사항이 계속 변하기 때문이다. 동작 파라미터화의 의도는 자바 기초 개념인 상속이나 인터페이스의 사용 목적과 결이 비슷하다. 공통 부분..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bmb0p1/btsrTR9gK43/Ywu7SEM5NLYU9qUOtXzljK/img.png)
이 글은 토비의 스프링 3.1 Vol.1 서적을 토대로 다른 자료들을 함께 참고하여 정리한 내용입니다. 스프링이란? 스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크다. 애플리케이션 프레임워크란? 개발을 빠르고 효율적으로 할 수 있도록 애플리케이션의 바탕이 되는 툴과 공통 프로그래밍 모델, 기술 API를 제공해준다. (개발자를 편하게 해주는 표준 틀이라고 생각하면 될 것 같다.) 스프링 컨테이너란? 스프링은 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다. 설정정보를 참고하여 애플리케이션을 구성하는 오브젝트 생성하고 관리한다. 독립적으로 동작할 수 있지만 웹모듈에서 동작하는 서비스나 서블릿으로 등록하여 사용한다. 스프링을 사용하기 위해서는 ..
오랜만에 알고리즘 문제 풀던 중 문자열 내 특수문자 한 종류를 제거하기 위해 다음과 같은 코드를 실행했다. str = str.replaceAll(c, ""); //c = "+" java.util.regex.PatternSyntaxException: Dangling meta character 예외가 발생했다. 사실 replaceAll이라는 함수 내용을 정확히 보지 않고 이름만 보고 str 내의 모든 c 를 "" 으로 바꾸어주겠지 싶었다. 이름만 봐서는 그냥 replace(a, b)는 가장 첫 a 만 바꾸어주는거고 replaceAll(a, b)는 문자열 내의 모든 a를 바꾸어주는거 처럼 보였기 때문이다... (찾아보니 많이들 이렇게 착각한다고..) replace() 와 replaceAll()은 모두 (Str..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bnVIVn/btrd0yKiI8A/aG7oLhfyZdISVY2mtBORe0/img.png)
https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 풀이법: 1. 최종으로 변경된 닉네임으로 다 덮어 씌워지기 때문에 저장하는 HashMap 만들기 2. id + " " + Enter/Leave를 차례대로 리스트에 저장한다 3. 2번 리스트를 순회 하면서 id의 최종닉네임을 1번 HashMap에서 가져온다. Comment: 1. 시간 복잡도는 O(2n). 코드: import java.util.*; class So..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/mTjnm/btrdU67SBDC/acyHbStKwDACQU0d89FkS1/img.png)
https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 풀이법: 1) HashMap 사용 코드: import java.util.*; class Solution { public static int solution(String s) { HashMap nums = new HashMap(); nums.put("zero", 0); nums.put("one", 1); nums.put("two", 2); nums.pu..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bElqQ5/btrdVOyALC1/jjUqaEdeBtDNy346csEaJk/img.png)
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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/n3HUq/btrc3q00CNL/VG7h9KTIcIKkRjuqvU6Hs1/img.png)
https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이법: 1) courses에서 코스 구성 메뉴 개수 하나 씩 꺼내온다. 2) 각 손님이 시킨 오더 목록마다 코스 메뉴 개수만큼 이루어진 조합 다 구하고 hashmap에 조합 출현횟수 카운팅. 3) 모든 손님 오더 목록 다 돌고 나면 내림차순으로 정렬. 4) 제일 많이 출현한 조합 답 리스트에 추가. 5) courses 다 돌 때까지 1~4 반복. Comment:..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/kW4B5/btrcZs37Ch5/lwuwbKp3mnPV7KuQUqjKF0/img.png)
https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 풀이법: 기본적인 문자열 처리 문제다. 정규 표현식(Regex)을 알면 쉽게 풀 수 있는 문제 (정규표현식 정리) Comment: 처음엔 각 단계별로 확인하려고 각 단계를 String 반환형으로 구현하고 println 때렸는데 Builder 패턴 쓰는게 가독성 훨씬 좋아 보인다. 풀다가 정리가 좀 필요했던 내용 1) Builder Pattern 2) 정규..
- Total
- Today
- Yesterday
- 코테
- jvm
- 카카오 코테
- digital tree
- 2020 KAKAO
- 스프링 컨테이너
- behavior parameterization
- 카카오
- 카카오코테
- 카카오 인턴
- WORE
- WORA
- IOC
- trie 소스코드
- nginx 내부
- PatternSyntaxException
- 2021
- 2019 Kakao Blind
- KAKAO 2021
- Java #GC #가비지콜렉터 #Garbage Collector
- 프로그래밍 모델
- 모던 자바 인 액션
- decorator
- Kakao Blind
- 신규 아이디 추천
- 스프링
- Java
- 디자인패턴
- Java #JIT #JVM
- okhttp3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |