일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트
- DxTrace
- 1300번
- Dxerr.h
- 프로그래머스
- SerialDate 리펙터링
- 2206번
- 11286번
- 가장 긴 증가하는 부분 수열2
- 11758번
- 9장
- Adapater Pattern
- 자바의 정석
- Spring
- 10830번
- 17장
- BOJ
- 2166번
- 1043번
- java
- 클린코드
- Design Patterns
- 냄새와 휴리스틱
- programmers
- Design Pattern
- java의 정석
- springboot
- 백준
- 2156번
- 코딩 테스트
- Today
- Total
목록전체 글 (80)
Don't give up!
코딩테스트 연습 - 보석 쇼핑 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 가장 짧은 구간을 구하기 위해서는 전체 보석의 종류를 알아야 하고, 어떤 위치에서 시작했을 때 구간의 길이가 몇인지 확인해야 합니다. 시작 위치는 1번째 보석부터 차례대로 이동하므로 FIFO인 자료구조 Queue에서 원소가 지워지는 과정과 비슷하게 볼 수 있으며, 순서대로 원소를 삽입하면서 Queue에 삽입된 원소의 종류가 전체 보석의 종류와 비슷한 순간을 확인하고 시작 위치를 이동시킬 수 있습니..
코딩테스트 연습 - 단체사진 찍기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 프렌즈들은 A, C, F, J, M, N, R, T로 정해져 있습니다. 따라서 8!=40320가지의 케이스를 미리 생성해둔 후, 조건을 만족하지 않는 케이스들을 제거하여 문제를 해결할 수 있을 것이라고 생각하였습니다. 코드 import java.util.*; class Solution { ArrayList cases = new ArrayLi..
코딩테스트 연습 - 전화번호 목록 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 특정 원소가 다른 원소의 접미사인지 확인하기 위해 주어진 원소들을 먼저 저장하고, 각 원소들의 가능한 접미사가 저장한 원소에 해당한다면 false를 반환하는 방식으로 문제를 해결할 수 있을 것이라고 생각하였습니다. 코드 import java.util.*; class Solution { public boolean solution(String[..
코딩테스트 연습 - 방문 길이 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 방문 길이 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 좌표에 대한 기억이 아닌 이동한 길을 기억해야 하는 문제이므로 지나온 길을 저장하고, 중복 확인을 하여 처음 걸어본 길의 길이를 반환할 수 있다고 생각하였습니다. 코드 import java.util.*; class Solution { public int solution(String dirs) { int x=0,y=0; HashSet set = new HashSet(); for(char c : dirs.toCharArray()){ if(c=='U' && y-5){ set.add(new Path(x,y,x,y-1)); y=y-1; ..
코딩테스트 연습 - 가사 검색 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 가사 검색 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? HashMap에 각 문자마다 검색될 수 있는 검색 쿼리를 미리 만들어 카운트를 추가함으로써 문제를 해결할 수 있을 것이라고 생각하였지만 호율성 테스트에서 실패하였습니다. 각 문자마다 길이x2-1개의 쿼리가 존재할 수 있기 때문에 상당히 많은 수의 키 값이 HashMap에 삽입되고, 이를 탐색하는 과정에서 많은 시간이 필요합니다. 문제에서 와일드카드 문자 '?'는 중간에 삽입되거나 양쪽에 존재하거나 존재하지 않는 경우는 고려하지 않습니다. 따라서 ?문자들이 접미사로 붙거나 접두사로 붙는 경우만 존재하므로 공통되는 알파벳 순서를 갖..
코딩테스트 연습 - 자물쇠와 열쇠 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 어떻게 생각하고 문제를 풀었는가? MxM 배열의 키는 회전이 가능하고 이동할 수 있습니다. 주어진 예시에서 알 수 있듯, 이동한 키의 원소 중 하나라도 자물쇠의 원소와 비교할 수 있다면 키의 역할을 수행할 수 있습니다. 주어진 조건에서 키 배열의 크기 M은 항상 자물쇠 배열의 크기 N 이하입니다. 따라서 키 배열의 마지막 열/행이 자물쇠 배열의 첫번째 열/행과 비교되는 케이스부터 키 배열의 첫번째 열/행이 배열의 마지막 열/행..
코딩테스트 연습 - 광고 삽입 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 문제에서 주어진 예시처럼 광고 삽입이 가능한 구간들 중에서 시청자들의 누적 재생시간이 가장 큰 구간을 찾아야 합니다. 누적 재생시간을 구하기 위해서 구간 내 시청자들의 수를 더하는 방법을 생각하였는데, 가능한 재생 구간이 초단위로 존재할 수 있고 각 재생 구간마다 시청자들의 수..
코딩테스트 연습 - 합승 택시 요금 | 프로그래머스 (programmers.co.kr) 어떻게 생각하고 문제를 풀었는가? 지점 k에서 A와 B가 택시를 따로 이용하여 목표지점으로 가는 경우 s->k까지의 최소비용 + k->A까지의 최소비용 + k->B까지의 최소비용으로 계산할 수 있습니다. 택시요금은 방향에 따라 달라지지 않습니다. 따라서 s에서 시작하여 각 지점까지의 최소비용, A에서 시작하여 각 지점까지의 최소 비용, B에서 시작하여 각 지점까지의 최소 비용을 미리 계산한 후 모든 k에 대한 비용 중 최소 값을 찾음으로서 전체 최소요금을 구할 수 있습니다. 코드 import java.util.*; class Solution { final int MAX = 20000001; int[][] lines; ..