개발자 쿠키

코딩테스트 오답노트 본문

algorithm

코딩테스트 오답노트

개발자 쿠키 2026. 3. 7. 14:44

Java 문법    SQL 문법 

1. 자료구조
   - 배열, ArrayList, HashMap, HashSet, Stack, Queue, Deque, PriorityQueue 

2. 정렬
   - Arrays.sort, Collections.sort

3. 문자열
   - StringBuilder, charAt, split

4. 수학
   - GCD/LCM, 소수, 에라토스테네스의 체

5. 구현/시뮬레이션
   - 배열 조작, 방향 벡터 (dx/dy)
   - 회전, 격자 처리

6. 그리디
   - 정렬 후 최적 선택

7. 누적합 / 차분배열
   - 1D, 2D 구간합
   - 차분 배열

8. 투포인터 / 슬라이딩 윈도우
   - left < right, left <= right
   - 고정 크기 윈도우, 가변 크기

9. 이분탐색
   - 값 찾기 (lowerBound/upperBound)
   - 파라메트릭 서치

10. 완전탐색
    - 순열 (dfs + visited) + 백트래킹
    - 조합 (dfs + start)
    - 부분집합 (선택/비선택)
    - 백트래킹 (가지치기)

11. BFS / DFS
    - 격자 탐색 (dx/dy)
    - 최단거리

12. DP
    - 기본형 (피보나치, 타일링)

13. 그래프
    - 인접 리스트/행렬
    - 유니온 파인드
    - 위상 정렬
    - 다익스트라 (PQ)
    - 플로이드-워셜
    - MST (크루스칼/프림)

14. 자료구조 응용
    - 단조 스택/큐
    - 세그먼트 트리 (여유되면)
    - 비트마스크

[2026-05-19] SWEA D3 1244
[2026-05-07] 프그 연속된 부분 수열의 합
[2026-05-06] 프그 2개 이하로 다른 비트
왜 못 풀었나 : 시초 발생
핵심 아이디어 : 
3일 후 복습 : X
 
[2026-04-21] 프그
뒤에 있는 큰 수 찾기 / 스택
왜 못 풀었나 : 완탐으로 풀어서 10^12 시초남 어떤 알고리즘&자료구조를 사용해야하는지 생각하지 못함
핵심 아이디어 : 
3일 후 복습 : X

해시 1.O 2.O 3.O (접두어만 비교할대는 startsWith 사용) 4.X 5.X
완전탐색 1.O 2.O 3.O 4.O 5.O 6.X 7.X 정렬 1.O 2.X 3.X
그리디 1.X 3.X 4.X dfs/bfs 1. O 2. ? 3.O 4.O 5.X 6.O 7.
1.O 2.X 3.X
스택/큐 1.O 2.O 3.O 4.X 5.X
이분탐색 (2) dp (5) 그래프 (3)

[2026-04-21] 백준 1038 / 완전탐색 dfs
[2026-04-21] 백준 3079 / 이분탐색 
[2026-04-20] 백준 2866 / 이분탐색 + hash
[2026-04-17] 백준 2118 / 누적합 + 투포인터
[2026-04-15] 백준 24479 / dfs
왜 못 풀었나 : 그래프 인접 리스트의 경우 dfs하는 방법 자체를 모름
[2026-04-14] 백준 2661
왜 못 풀었나 : 1~3개의 문자열이 인접하면 안된다는 코드로 구현 못함
[2026-04-14] 백준 부등호
[2026-04-14] 백준 데스 나이트
[2026-04-14] 백준 배열 돌리기3
왜 못 풀었나 : 90도 돌리는 법을 모름

[2026-04-11] 백준 / 9527
왜 못 풀었나 : a부터 b까지 숫자에서 a를 2진수로 바꿨을 떄 1이 나올떄마다 카운트하는 방식으로함-> 시초발생
[2026-04-11] 백준 / 22866 
왜 못 풀었나 : 시초났음
[2026-04-11] 백준 / 2206 / 3차원 visited 
[2026-04-11] 백준 / 14658 
[2026-04-10] 백준 / 1238 / 다익스트라

[2026-04-09] 
왜 못 풀었나 : dfs로 풀어서 시초남
핵심 아이디어 : 
3일 후 복습 : X

[2026-04-08] 프그 큰 수 만들기 / 그리디
왜 못 풀었나 : dfs로 풀어서 시초남
핵심 아이디어 : 
3일 후 복습 : X

[2026-04-07] 백준 16926 / 배열
왜 못 풀었나 : 배열을 돌리는 과정을 구현하지 못함
핵심 아이디어 : 
3일 후 복습 : X

[2026-04-06] 백준 17276 / 배열
왜 못 풀었나 : 배열을 자유자재로 다루는 능력 부족
핵심 아이디어 : 
3일 후 복습 : X

[2026-04-05] 백준 1022 / 시뮬레이션
왜 못 풀었나 : 격자탐색 시뮬 구현능력 부족
핵심 아이디어 : 
3일 후 복습 : X

[2026-04-04] 백준 1913 / 시뮬레이션
왜 못 풀었나 : 격자탐색 시뮬 구현능력 부족
핵심 아이디어 : 
3일 후 복습 : X 

[2026-04-03] 프그 방문 길이
왜 못 풀었나 : 어떤 알고리즘을 사용해야하는지 모름
핵심 아이디어 : 
3일 후 복습 : X

[2026-03-26] 백준 6603 / dfs
왜 못 풀었나 : 선택된 6개의 숫자는 배열에 저장한다는 생각을 못함
핵심 아이디어 : dfs -> depth==6이면 배열에 저장된 6개 출력
3일 후 복습 : X X (3/29) O (4/24)
[2026-03-25] 프그 소수찾기 / dfs / 순열 

[2026-03-26] 백준 1182 부분수열의 합 / dfs / 부분집합
[2026-03-26] 백준 2667 단지번호붙이기 / dfs / 그래프탐색 -> dfs + dxdy
[2026-03-26] 백준 1987 알파벳 복습 / dfs / 백트래킹심화
[2026-03-28] 프그 게임 맵 최단거리 / bfs / 기본
[2026-03-27] 백준 1654 랜선 자르기X O(3/30)
[2026-03-26] 프그 네트워크 / dfs / 그래프탐색
[2026-03-26] 프그 양궁대회 / dfs / 백트래킹
[2026-03-27] 프그 문자열 압축 / 구현 -> 아예 못품
[2026-03-27] 프그 가장 큰 수 / 정렬 : 문자열 커스텀 정렬
[2026-03-27] 프그 H-Index / 정렬 
[2026-03-27] 백준 2110 공유기 설치 
[2026-03-28] 백준 1253 GOOD 복습 / 투포인터
[2026-03-28] 백준 13144 List of Unique Numbers 복습 / 투포인터

[2026-04-01] 백준 2179 / 구현
[2026-04-02] 프그 스킬트리 / 구현
왜 못 풀었나 : 문자가 1씩 커져야 한다는 것을 이해하지 못함. -> 문제를 더 정확하게 읽고 변수가 무슨 의미인지 기록하고 코드 짜기
핵심 아이디어 : 
3일 후 복습 : X

[2026-03-29] 백준 15686 / dfs
왜 못 풀었나 : 문제를 이해하지 못했음
핵심 아이디어 : 
3일 후 복습 : X

[2026-03-28] 프그 게임맵 최단거리
[2026-03-28] 프그 베스트앨범 / hash 
왜 못 풀었나 : 문제를 이해하지 못했음
핵심 아이디어 : 
3일 후 복습 : X

[2026-03-25] 프그 메뉴 리뉴얼 / dfs + hash / 조합 
왜 못 풀었나 : 문제를 이해하지 못했음
핵심 아이디어 : dfs(sum + numbers[depth], depth+1);  dfssum - numbers[depth], depth+1);
3일 후 복습 : X

[2026-03-24] 프그 타겟 넘버 / dfs + 문자 / 순열
왜 못 풀었나 : dfs를 사용방법을 아직 모르는거 같음
핵심 아이디어 : dfs(sum + numbers[depth], depth+1);  dfs(sum - numbers[depth], depth+1);
3일 후 복습 : O

[2026-03-22] 백준 1027
왜 못 풀었나 : 
핵심 아이디어 : 기울기 건물 i에서 j를 바라볼 때 (arr[j] - arr[i]) / (j - i) 이전까지의 기울기보다 더 큰 기울기가 나와야 건물이 보임 
3일 후 복습 : X

[2026-03-22] 백준 1976 / dfs + 인접행렬 
왜 못 풀었나 : 머리속으로 아이디어는 떠올랐으나 구현방법은 떠오르지 않음
핵심 아이디어 : 
3일 후 복습 : X

[2026-03-20] 백준 13144 / 투포인터
왜 못 풀었나 : 
핵심 아이디어 : 중복없는 연속 부분수열을 찾는 문제 : left에서 시작해서 중복 안 나올 때까지 right를 밀고, 그 구간 길이가 곧 부분수열 개수
3일 후 복습 : X X (3/28)

[2026-03-20] 백준 9935 / ?
왜 못 풀었나 : 시간초과 났음. (n^2)
핵심 아이디어 : StringBuilder()로 스택처럼 사용 
3일 후 복습 : X

[2026-03-18] 백준 1654 / 이분탐색
왜 못 풀었나 : right = mid - 1, left = mid + 1, 21억넘는건 long 타입으로, 0으로 나누면 에러뜨니 left=1;
핵심 아이디어 : while(left <= right) 여야 left=right일때도 비교 가능
3일 후 복습 : O (3/28)

[2026-03-18] 백준 1987 / 백트래킹 (dfs)
왜 못 풀었나 : vis[r][c][26] 으로 만들어줘서 배열이 false일때만 방문처리 해주려 했으나 알파벳이 2개 들어오면 방문 자체를 못함으로 잘못된 아이디어
핵심 아이디어 : vis[문자 - 'A'] = true / 26크기짜리 문자열 배열을 만들어주고 false일때만
방문합니다. 그리고 백트래킹으로 dfs 타면 false 카운트도 false하면 cnt--해줬음
3일 후 복습 : O (3/26)
[2026-03-18] 백준 2110 / 이분탐색
왜 못 풀었나 : 이분탐색을 모름, 거리의 차를 left, right로 둔다
핵심 아이디어 : 
3일 후 복습 : X X  (3/28)

[2026-03-17] 백준 1253 / 투포인터
왜 못 풀었나 : 2중 for문으로 시간초과 발생, left, right 포인터에서 i랑 left or right랑 인덱스가 같으면 continue
핵심 아이디어 : for문으로 arr[i] check 하면서 투포인터 무한루프를 돌림 
arr이랑 두개 고른게 같아지면 break 아니면 무한루프
3일 후 복습 : X X(3/28)

[2026-03-15] 백준 1863 / 스택
왜 못 풀었나 : 문제는 이해했으나 아이디어 구현이 떠오르지 않음
핵심 아이디어 : 스택을 이용해 새로들어오는 y값이 더 크면 무한루프 pop 작으면 push
3일 후 복습 : X

[2026-03-13] 백준 2138 / 그리디
왜 못 풀었나 : 첫 번째 스위치를 눌렀을 때, 안눌렀을 때 2가지 경우를 생각 못하고 한가지 경우만 생각함
핵심 아이디어 : simulate(arr, res, false) simulate(arr, res, true)
3일 후 복습 : X

[2026-03-10] 백준 16234 / bfs
왜 못 풀었나 : bfs인지도 모름
핵심 아이디어 : 방문할때마다 bfs로 돌려서 카운트
3일 후 복습 : X

[2026-03-08] 백준 7490 / dfs
왜 못 풀었나 : dfs로 + - 공백 연산을 추가해주는 부분을 못함
핵심 아이디어 : dfs(idx+1, str + "+" + idx);
3일 후 복습 : X X(4/24)

[2026-03-04] 백준 2668 / 숫자고르기
왜 못 풀었나 : 사이클 탐색 문제인데 dfs에서 매개변수를 어떻게 설정해야할지 모르겠음
핵심 아이디어 : 
3일 후 복습 : X X (4/22)

[2026-03-04] 백준 22251 / 빌런 호석
왜 못 풀었나 : 
핵심 아이디어 : 
3일 후 복습 : X

[2026-03-03] 백준 7682 / 틱택토
왜 못 풀었나 : O와 X의 숫자의 차이가 1이어야한다는걸 이해하지못함. 분기처리가 많은건 함수로 빼는게 좋음
핵심 아이디어 : 
3일 후 복습 : X (3/23)

[2026-03-02] 백준 2467 / 용액 / 투포인터
왜 못 풀었나 : 투포인터에 대해 약했음
핵심 아이디어 : 더한 용액이 0보다 작으면 left++ 크면 right--
3일 후 복습 : O

[2026-02-XX] 백준 2493 / 탑 / 스택
왜 못 풀었나 : for문 2개 돌리다가 시초가 발생함, 스택 생각 못함
핵심 아이디어 : Stack<int[] > stack = new int<>(); stack.add(new int[]{배열값, i+1});
3일 후 복습 : O

[2026-02-XX] 백준 14719 / 빗물
왜 못 풀었나 : 아이디어를 못떠올림
핵심 아이디어 : 가운데를 기준으로 계속 max값이 커져가면서 현재 위치랑 비교
3일 후 복습 : O

[2026-03-12] 백준 20437 / 문자열게임2 / 문자열
왜 못 풀었나 : 배열에 a가 나온 위치를 저장한다는 생각을 하지 못함
핵심 아이디어 : pos[c][x]는 a가 나온 위치, pos[a][0] - pos[a][0+k-1] + 1은 앞뒤가 같은 문자열의 길이
3일 후 복습 : X

[2026-02-XX] 백준 12919 / 숨박꼭질 3 / 다익스트라
[2026-03-01] 백준 5972 / 택배 배송 / 다익스트라
[2026-03-16] 백준 1863 / 다익스트라
왜 못 풀었나 : bfs로 풀다가 실패 -> 최단거리는 무조건 다익스트라
핵심 아이디어 : 우선순위큐 사용
3일 후 복습 : X

[2026-02-XX] 백준 20055 / 컨베이어 벨트 위의 로봇 / 시뮬레이션
왜 못 풀었나 : 아예 건들지 못함
핵심 아이디어 : 
3일 후 복습 : X

[2026-02-XX] 백준 16928 / 뱀과 사다리 게임 
왜 못 풀었나 : 
핵심 아이디어 : 
3일 후 복습 : X




 


SQL 복습 

SQL 문법 정리 
1차 고득점 KIT 1회독
2차 고득점 KIT Level 3 ~ 4 복습 (2026.03.29 ~ ) 
피드백
- 서브쿼리에 where, from, having절에 올 수 있음 공부
- 윈도우 함수 공부

# Join
2. 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - 모르겠음
4. 그룹별 조건에 맞는 식당 목록 출력하기 - 서브쿼리
9. 상품을 구매한 회원 비율 구하기
10. FrontEnd 개발자 찾기 - & 비트연산자 사용법을 모름, 알고리즘에서도 연습 필요


# Group By
1. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 -> CASE WHEN은 잘 썼으나 max값 활용하는 것을 못함
7. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
9. 입양 시각 구하기(2)
10. 언어별 개발자 분류하기
13. 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

# Select
서울에 위치한 식당 목록 출력하기 x
오프라인/온라인 판매 데이터 통합하기 x
대장균들의 자식의 수 구하기
대장균의 크기에 따라 분류하기 1
대장균의 크기에 따라 분류하기 2

특정 세대의 대장균 찾기
멸종위기의 대장균 찾기