일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1043번
- 10830번
- Adapater Pattern
- 1300번
- BOJ
- java
- 2206번
- programmers
- 코딩테스트
- 프로그래머스
- 클린코드
- Dxerr.h
- SerialDate 리펙터링
- Design Patterns
- java의 정석
- Design Pattern
- springboot
- 가장 긴 증가하는 부분 수열2
- 2166번
- Spring
- 백준
- 9장
- 자바의 정석
- 11286번
- 17장
- 코딩 테스트
- 2156번
- DxTrace
- 냄새와 휴리스틱
- 11758번
- Today
- Total
목록전체 글 (80)
Don't give up!
코딩테스트 연습 - 타겟 넘버 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 서로 다른 수들의 합 또는 차로 타겟 넘버가 결정되기 때문에 모든 경우를 직접 계산하여 확인하여야 한다고 생각했다. k번째 정수까지 계산을 끝냈을때 k+1번째 정수는 + 또는 -로 두가지 경우의 결과를 계산하여야 합니다. 이러한 문제를 DFS(깊이 우선 탐색)을 통해 간단한 코드로 해결하고자 하..
코딩테스트 연습 - 오픈채팅방 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 입력 받는 문자열들은 모두 "[행동] [유저아이디]" 또는 "[행동] [유저아이디] [닉네임]"으로 이루어져 있습니다. 가장 마지막에 입력된 닉네임으로 메시지에 출력되기 때문에 유저아이디 - 닉네임으로 먼저 저장을 하는 작업을 수행한 후 행동에 따른 메시지를 출력하는 것으로 문제를 해결할 수 있다고 생각하였습니다. 코드 import java.uti..
코딩테스트 연습 - 큰 수 만들기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 탐욕 알고리즘을 사용하고자 했습니다. 탐욕 알고리즘이란 주어진 상황에서 최적을 선택해나가 답을 구하는 알고리즘입니다. 고려 대상에 두개의 문자만을 두고 앞 자리의 수가 뒷 자리의 수보다 클때까지 앞 자리수를 삭제하는 식으로 문제를 해결하고자 하였습니다. 중간에 삭제되는 문자가 있을 수 있습니다. 이를 고려하여 LIFO인 자료구조 Stack을 활용하고자 하였습니다. 코드 import java.util.Stack; class Solution { public String solution(String number, int k) ..
코딩테스트 연습 - 가장 큰 수 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 두 정수를 어느 순서로 이어붙이느냐에 따라 만들 수 있는 수의 크기가 다르다는 것은 문자열 두개를 다른 순서로 이었을 때 첫 문자부터 비교를 시작하여 문자 값이 다른 구간이 존재한다라는 것을 의미합니다. C언어에서는 compare함수로, java에서는 compareTo함수로 이를 구..
코딩테스트 연습 - 더 맵게 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 문제해석 문제를 해결하는데 있어 가장 먼저 생각난 것은 '정렬'입니다. 새로운 음식을 만들어 내는데 스코빌 지수가 가장 작은 2개가 사용되기 때문입니다. 작은 순으로 정렬이 이루어지는 것으로 Min Heap이 떠올랐습니다. 우선순위 큐(Priority Queue)는 Heap으로 구현된 우선순위에 따라 순서가 결정되는 Queue입니다. 직접 함수를 통해 sort를 수행하려..
코딩테스트 연습 - 괄호 변환 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 문제해석 문제를 해결하기 위해 필요한 것은 균형잡힌 괄호 문자열 분리, 올바른 괄호 문자열 판단, 문자열 변환입니다. 균형잡힌 괄호 문자열을 올바른 괄호 문자열로 변경하는 방법은 이미 문제에서 주어져 있습니다. 균형잡힌 문자열은 '('와 ')'의 개수가 같은 문자열입니다. String의 문자를 순회하면서 개수가 같은 지점을 기준으로 분리할 수 있을 것입니다. 가장 안쪽 괄호는 열린 ..
코딩테스트 연습 - 다리를 지나는 트럭 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 문제해석 순서상 앞에 있는 대기트럭이 먼저 다리를 건너고, 모든 트럭의 속도가 1초에 1로 동일하므로 다리를 건너는 트럭들도 먼저 건너기 시작한 트럭이 먼저 지날 것입니다. 따라서 First In, First Out(FIFO)의 규칙을 가지고 있는 Queue를 활용한다면 쉽게 문제를 해결할 수 있다고 생각하였습니다. 풀이 import java.util.*;..
코딩테스트 연습 - 기능개발 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 문제해석 개발에 소요된 기간 계산은 {100-(작업진도)}/(개발속도) 로 계산할 수 있습니다. 먼저 개발된 기능은 순서상 앞에 있는 기능의 배포와 함께 이루어지므로 이전 기능의 개발 기간과 대소 비교를 통해 문제를 해결할 수 있다고 생각하였습니다. 풀이 class Solution { public int[] solution(int[] progresses, int[] speed..