1
코딩 테스트 합격을 위한
2023년 연말 특강
×
영상은 차주 유투브에 업로드될 예정입니다.
https://www.youtube.com/channel/UCulplOST7XpLnc6xxNFEAoQ
2
3
발표자 소개
introduce presenter
4
저는…
5
오늘 할 이야기
What to talk about today
6
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
1. 이 책을 쓰게 된 이유
“친절한 책을 쓰고 싶었습니다.”
7
1. 이 책을 쓰게 된 이유
“선배의 머릿 속이 궁금했습니다.”
8
1. 이 책을 쓰게 된 이유
“다시 꺼낼 수 있는 책을 만들고 싶었습니다.”
9
10
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
2. 이 책의 특징과 장점, 대상 독자
11
기본적인 자료구조/알고리즘 코드
꼭 알아야 할 개념이 포함된 코드
(성능측정/자주실수하는 코드 등)
책에 있는 문제의 정답코드
2. 이 책의 특징과 장점, 대상 독자
12
2. 이 책의 특징과 장점, 대상 독자
13
2. 이 책의 특징과 장점, 대상 독자
14
15
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
3. 코딩 테스트 마인드셋
16
3. 코딩 테스트 마인드셋
17
3. 코딩 테스트 마인드셋
18
3. 코딩 테스트 마인드셋
19
20
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
4. 2023 코딩 테스트 트렌드, 2024는?
21
4. 2023 코딩 테스트 트렌드, 2024는?
22
4. 2023 코딩 테스트 트렌드, 2024는?
23
4. 2023 코딩 테스트 트렌드, 2024는?
24
4. 2023 코딩 테스트 트렌드, 2024는?
25
26
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
5. 자료구조 + 알고리즘 주요 개념 4가지
27
5. 자료구조 + 알고리즘 주요 개념 4가지
28
5. 자료구조 + 알고리즘 주요 개념 4가지
29
5. 자료구조 + 알고리즘 주요 개념 4가지
시간 복잡도
왜 코딩 테스트에서 시간 복잡도가 중요할까?
30
5. 자료구조 + 알고리즘 주요 개념 4가지
31
기준 수행시간
코드제출
수행시간 측정
비교
기준 수행시간에 각 언어마다 정한 상수를 곱한 시간 이내로 수행되는지 확인
5. 자료구조 + 알고리즘 주요 개념 4가지
시간 복잡도
어떻게 측정할 것인가?
32
5. 자료구조 + 알고리즘 주요 개념 4가지
33
코드 실행
입력
출력
코드 실행하는 동안 연산횟수를 측정
5. 자료구조 + 알고리즘 주요 개념 4가지
34
1
4
2
3
7
8
9
5
배열 원소에 내가 원하는 값이 있는지 탐색
케이스 | 연산 횟수 |
찾는 원소가 맨 처음에 있는 경우 | 1 |
찾는원소가 중간에 있는 경우 | 4 |
찾는 원소가 없는 경우 | 8 |
연산횟수 측정
어느정도 연산이 소요되는지는 알수있다. 하지만 그래서 성능이 정확히 어떻다는 것인가?
5. 자료구조 + 알고리즘 주요 개념 4가지
35
연산횟수는 n^2 + 3n + 5
n^2
3n
즉 n^2이 절대적으로 많은 영향을 미침
시간 복잡도는 Big-O 표기로 O(n^2)가 됨
5. 자료구조 + 알고리즘 주요 개념 4가지
36
복잡도 | 사용되는 예시 | 연산횟수 | |
10 | 20 | ||
O(1) | 배열의 인덱스를 통해서 원소접근 | 1 | 1 |
O(logn) | 이진탐색 | 1 | 1 |
O(n) | 순차탐색 | 10 | 20 |
O(nlogn) | 정렬 | 10 | 26 |
O(n^2) | 행렬곱셈, 다항식 계산 | 100 | 400 |
O(2^n) | 부분집합 구하기, 하노이 | 1024 | 1,048,576 |
O(N!) | 순열 생성, 외판원 문제(TSP) | 3,628,800 | 2,432,902,008,176,640,000 |
x좌표가 다름을 유의
전체 그래프
복잡도 O(nlogn 미만 그래프)
5. 자료구조 + 알고리즘 주요 개념 4가지
37
선형탐색,O(x)
행렬곱셈O(x^2)
부분 집합,O(2^x)
트리탐색, O(logx)
5. 자료구조 + 알고리즘 주요 개념 4가지
시간 복잡도
어떻게 사용할 것인가?
38
5. 자료구조 + 알고리즘 주요 개념 4가지
39
O(N^2) 알고리즘으로 풀면 통과하지 못하겠구나!
복잡한 알고리즘을 생각하지 않고, 그냥 구현하면 되겠구나!
5. 자료구조 + 알고리즘 주요 개념 4가지
40
연산 | 복잡도 |
문자열에 문자 추가 | append()는 O(1) +연산자는 O(N) |
맨 앞의 원소삭제 | 리스트의 pop(0)는 O(N) 덱의 popleft()는 O(1) |
기존 데이터에 원소 삽입시 정렬 유지 | 리스트는 O(NlogN) 힙큐는 O(logN) |
원소 존재여부 확인 | 리스트는 O(N) 집합/딕셔너리는 O(1) |
문자열 여러개를 한번에 합칠때 | +연산자는 O(N^2) join()은 O(N) |
5. 자료구조 + 알고리즘 주요 개념 4가지
DFS와 BFS
왜 코딩테스트에 많이 나오는가?
41
5. 자료구조 + 알고리즘 주요 개념 4가지
42
스택
큐
def a():
a()
재귀
먼저 공부하기
DFS와 BFS중 어떤걸 사용할 것인가?
- 최단경로를 찾는 문제는 BFS
- 백트레킹이 필요한 문제는 DFS
문제 분석하기
5. 자료구조 + 알고리즘 주요 개념 4가지
DFS와 BFS
반드시 알아야 할 사전지식
43
5. 자료구조 + 알고리즘 주요 개념 4가지
① functionA 호출
② functionB 호출
③ functionB 다음으로 감
함수호출 흐름
재귀함수
재귀호출
종료조건
5. 자료구조 + 알고리즘 주요 개념 4가지
DFS와 BFS
DFS 알고리즘
46
5. 자료구조 + 알고리즘 주요 개념 4가지
백트래킹
백트래킹
탐색할 노드가 없을 때까지 감
5. 자료구조 + 알고리즘 주요 개념 4가지
스택을 활용한 DFS 예시코드 재귀를 활용한 DFS 예시코드
A
B
D
A
B
D
D
A
B
B
최근 방문 노드
최근 방문 노드
5. 자료구조 + 알고리즘 주요 개념 4가지
그래프로 나타내면
1번 노드를 시작으로 DFS
방문
인정한 노드가 있을 경우 해당 노드를 dfs(재귀)
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
DFS와 BFS
BFS 알고리즘
54
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
B
C
B
D
B
E
D
E
B와 인접
C
C
D
D
E
E
5. 자료구조 + 알고리즘 주요 개념 4가지
그래프로 표현하면
1번 노드를 시작으로 BFS
방문
인접한 노드를 모드 순회하며, 방문 X 한 경우 방문처리하고 푸시
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
DFS와 BFS
DFS vs BFS
60
5. 자료구조 + 알고리즘 주요 개념 4가지
해
해
BFS가 찾는해
DFS가 찾는해
앞
뒤
앞
뒤
앞
뒤
2개 동전 앞뒤 모든 경우 확인-백트래킹
해가 2개있는 경우 DFS vs BFS
5. 자료구조 + 알고리즘 주요 개념 4가지
다익스트라 알고리즘
최단경로란 무엇인가?
62
5. 자료구조 + 알고리즘 주요 개념 4가지
63
A
C
B
E
D
2
5
6
8
4
1
2
4
왼쪽 그래프는 이렇게 해석 할수 있다
- A에서 D까지 최단 경로는 {A, E, C, D}이다.
- A에서 D까지 최단 경로 길이는 11이다.
- A에서 D까지 최단 경로로 갈때 C의 직전
노드는 E이다.
- A에서 C까지 최단 경로는 {A,E,C}이다.
- A에서 D까지 최단 경로는
A에서 C까지 최단 경로에 C에서 D까지
가중치를 더한 것과 같다.
5. 자료구조 + 알고리즘 주요 개념 4가지
64
A
D
B
C
20
15
900
50
노드 | 길이 | 직전 노드 |
A | 0 | A |
B | INF | X |
C | INF | X |
D | INF | X |
현재까지 구한, 최단경로의 길이
최단 경로를 구성하는 직전 노드
최단경로를 구하기 위해 초기화!
5. 자료구조 + 알고리즘 주요 개념 4가지
다익스트라 알고리즘
최단경로를 어떻게 구할 것인가?
65
5. 자료구조 + 알고리즘 주요 개념 4가지
66
A
F
B
C
20
15
900
50
노드 | 길이 | 직전 노드 |
A | 0 | A |
B | INF | X |
C | INF | X |
D | INF | X |
현재 최단경로 배열에서 길이가 최소,”거치는 노드”
-> 거치는 노드를 통한 경로를 체크하는게 최선(그리디적 선택)
각 최단경로는 “거치는 노드”보다 적을수 없음
-> 조합해도 “거치는 노드”보다 적어질수 없음
5. 자료구조 + 알고리즘 주요 개념 4가지
67
A
D
B
C
20
15
900
50
노드 | 길이 | 직전 노드 |
A | 0 | A |
B | INF | X |
C | INF | X |
D | INF | X |
5. 자료구조 + 알고리즘 주요 개념 4가지
68
A
D
B
C
20
15
900
50
노드 | 길이 | 직전 노드 |
A | 0 | A |
B | INF | X |
C | INF | X |
D | INF | X |
① 현재까지 구한 최단거리중 “A”가 최소
② A가 “거치는 노드”가 됨
B | 15 | A |
C | 20 | A |
INF > (0 + 15)
INF > (0 + 20)
5. 자료구조 + 알고리즘 주요 개념 4가지
69
A
D
B
C
20
15
900
50
노드 | 길이 | 직전 노드 |
A | 0 | A |
B | 15 | A |
C | 20 | A |
D | INF | X |
① 현재까지 구한 최단거리중 “B”가 최소
② A가 “거치는 노드”가 됨
* “A”를 거치는건 이미 했으므로 제외
D | 915 | B |
INF > (15 + 900)
5. 자료구조 + 알고리즘 주요 개념 4가지
70
A
D
B
C
20
15
900
50
노드 | 길이 | 직전 노드 |
A | 0 | A |
B | 15 | A |
C | 20 | A |
D | 70 | C |
D <- C <- A
C <- A
B <- A
A <- A
5. 자료구조 + 알고리즘 주요 개념 4가지
71
A
D
B
C
20
15
900
50
노드 | 길이 | 직전 노드 |
A | 0 | A |
B | 15 | A |
C | 20 | A |
D | 70 | C |
D <- C <- A
C <- A
B <- A
A <- A
5. 자료구조 + 알고리즘 주요 개념 4가지
다익스트라 알고리즘
다익스트라를 사용할때 주의할 점
72
5. 자료구조 + 알고리즘 주요 개념 4가지
73
A
B
C
8
-500
4
D
10
맨 처음 거치는 노드는 “C”이고 이때 경로길이는 4임
하지만 추후 “C”까지 가는 더 짧은 경로가 발생 함
5. 자료구조 + 알고리즘 주요 개념 4가지
74
5. 자료구조 + 알고리즘 주요 개념 4가지
75
5. 자료구조 + 알고리즘 주요 개념 4가지
76
5. 자료구조 + 알고리즘 주요 개념 4가지
77
5. 자료구조 + 알고리즘 주요 개념 4가지
78
5. 자료구조 + 알고리즘 주요 개념 4가지
79
5. 자료구조 + 알고리즘 주요 개념 4가지
80
81
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
6. 코딩 테스트 주요 문제 풀이 2가지
실전문제 #1 - 짝지어 제거하기
문제 분석
82
6. 코딩 테스트 주요 문제 풀이 2가지
83
5분간 생각해봐요
6. 코딩 테스트 주요 문제 풀이 2가지
84
① 알파벳 2개가 붙은 짝 찾음
② 둘을 제거
③ 나머지 문자열 붙임
시간복잡도가 O((len(s)^2)일 경우 시간초과
쓸데 없는 고민은 최대한 줄일수 있음(숫자,특수문자,대문자 고려할 필요가 없음)
6. 코딩 테스트 주요 문제 풀이 2가지
85
6. 코딩 테스트 주요 문제 풀이 2가지
실전문제 #1 - 짝지어 제거하기
문제 풀이
86
6. 코딩 테스트 주요 문제 풀이 2가지
87
b
a
a
b
a
a
아래 1)과 2)를 붙인다
1) 없어지는 문자열 이전 문자 중, 가장 최근 문자 ‘b’
2) 없어지는 문자열 바로 다음 문자 ‘b’
b
b
a
a
1) 없어지는 문자열 이전 문자가 없으므로, 없어지는 문자열 이후 문자 ‘a’ 부터 시작
a
a
1) 없어지는 문자열 이전 문자가 없으므로, 없어지는 문자열 이후 문자 ‘b’ 부터 시작
6. 코딩 테스트 주요 문제 풀이 2가지
88
뒤에 있는 문자열을 그대로 붙이면 .. copy-move가 됩니다. O(N^2), TLE 가능성 존재
b
a
a
x
…..
a
0
1
2
3
N
6. 코딩 테스트 주요 문제 풀이 2가지
89
copy-move 하지 않고 중간 문제열 삭제 후 “b”와 비교할수 있으면 됨
-> 삭제되기 전 “가장 최근” 문자열을 알면 됨, LIFO 방식의 스택이 적절함
b
a
a
x
…..
a
0
1
2
3
N
b
a
같지 않으면 push
b
a
a
같으면 pop
b
x
같지 않으면 push
스택을 활용하도록 개선(Copy move가 없음)
문자열을 전부 순회했을때 스택에 문자가 남아있으면 처리가 완료됨
6. 코딩 테스트 주요 문제 풀이 2가지
5. 자료구조 + 알고리즘 주요 개념 4가지
실전문제 #2 - 게임 맵 최단 거리
문제 분석
91
6. 코딩 테스트 주요 문제 풀이 2가지
92
5분간 생각해봐요
6. 코딩 테스트 주요 문제 풀이 2가지
93
DFS가 아닌 BFS를 써야 한다
대각선으로는 움직일 수 없다
맵을 벗어날수 없으므로 불가능
도착할 수 없는 경우도 입력에 주어짐
이게 더 빨리 도착하는데?
이러는 순간 망합니다!
6. 코딩 테스트 주요 문제 풀이 2가지
n*m하면 최대 칸이 10,000개 까지 될수 있음
성능을 크게 고민하지 않고 탐색 알고리즘으로 접근 가능
사실 당연한 얘기 입니다. 단순히 미로 크기인데 다를 수 없다는게 이상합니다.
너무 시간은 뺐기지 않되, 뭘 의미하나 한번 고민해보는 정도면 됩니다.
배열은 (0,0) 시작하므로 헷갈리지 않도록 중요 표시해두면 좋음
6. 코딩 테스트 주요 문제 풀이 2가지
95
6. 코딩 테스트 주요 문제 풀이 2가지
실전문제 #2 - 게임 맵 최단 거리
문제 풀이
96
6. 코딩 테스트 주요 문제 풀이 2가지
97
상하좌우 이동을 그래프로 표현
맵 밖을 벗어나면 더이상 탐색하지 않음
맵 밖을 벗어나면 더이상 탐색하지 않음
하
상
상
좌
좌
우
우
하
굳이 돌아가는 걸 체크할 필요 없음(이미 방문여부 체크 필요)
…
…
…
…
…
6. 코딩 테스트 주요 문제 풀이 2가지
0 | X | X | X | X |
X | X | X | X | X |
X | X | X | X | X |
X | X | X | X | X |
X | X | X | X | X |
maps
distance
현재 방문하지 않았으면 X
방문 했으면 시작점부터 현재 위치까지 거리
move
6. 코딩 테스트 주요 문제 풀이 2가지
Q&A
100