SlideShare a Scribd company logo
코딩 테스트 합격을 위한
2023년 연말 특강
1
×
영상은 차주 유투브에 업로
드될 예정입니다.
https://www.youtube.com/channel/UCulplOST7XpLnc6xxNFE
AoQ
2
3
발표자 소개
introduce presenter
4
● 이 책의 저자 박경록입니다.
● 코딩 테스트 외의 지식을 나누는 것을 좋아합
니다.
● MBTI가 ESTJ 입니다.
● 게으른 개발자를 좋아합니다.
저는…
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개월은 필요, 시간이 충분히 필요함을 인정하고 인내를 가지고 준비
3. 코딩 테스트 마인드셋
17
● 모든 알고리즘을 다 알아야 한다는 생각을 버리자
○ 많이 알면 좋음(당연)
○ but… 알고리즘은 끝이 없고, 공부 시간은 제한되어 있음
■ 전략적으로 접근 ➝ 트렌드는 많이 바뀌지 않음 ➝ 빈출 알고리즘 위주로 공부
3. 코딩 테스트 마인드셋
18
● 사공이 많으면 배가 산으로 가죠
○ 주변 친구의 말 너무 따르지 말 것
○ 주관을 가지고 공부
○ 대부분 나와 실력 차이가 그렇게 많이 나지 않음
○ 목표를 명확히, 내가 할 것들에 집중, 꾸준히
3. 코딩 테스트 마인드셋
19
● 피드백 받기를 두려워 하지 말자
○ 내가 공부한 내용을 많이 공개하자, 피드백을 많이 받자
○ 질문을 많이 하자(질문 가이드)
■ 질문을 정리하고 공유하는 건 귀찮다, 근데 공부가 원래 귀찮다(인정하자)
○ 피드백을 위해 들이는 시간을 아까워 하지 말자
■ 피드백을 통해 잃는 것보다 얻는 게 더 크다
■ 질문/요청을 작성하면 본인이 한번 읽어보자
20
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
4. 2023 코딩 테스트 트렌드, 2024는?
21
● 코딩 테스트 경향은 바뀌지 않음
● 코딩 테스트는 개발자의 기본 능력을 평가하는 시험
● 특정 알고리즘을 알아야 풀 수 있는 문제 X
● 문제를 정확히 이해하고 요구사항을 빠짐없이 구현하는 문제 O
4. 2023 코딩 테스트 트렌드, 2024는?
22
● 탐색
○ 단순한 반복 탐색 多
○ DFS(스택, 재귀) / BFS / 백트래킹 多
● 대표 문제(풀어보면 좋음)(책에도 있음)
○ 반복 탐색 문제 : 모의고사(문제 4, 정답코드)
○ DFS 문제 : 네트워크(문제 43, 정답코드) , 전력망 둘로 나누기(문제 46, 정답코드)
○ BFS 문제 : 경주로 건설(문제 45, 정답코드)
○ 백트래킹 문제 : 스도쿠 퍼즐(문제 48,정답코드), 피로도(문제 49, 정답코드)
4. 2023 코딩 테스트 트렌드, 2024는?
23
● 시뮬레이션
○ 특정 알고리즘 적용 X
○ 이해한 대로 구현 O
○ 좌표 / 배열 / 구현
● 대표 문제(풀어보면 좋음)(책에도 있음)
○ 좌표 문제 : 캐릭터의 좌표(문제 69, 정답 코드)
○ 배열 문제 : 배열 회전(문제 62, 정답 코드), 전치 행렬(문제 63, 정답 코드)
○ 구현 문제 : 카펫(문제 67, 정답 코드), 점프와 순간이동(문제 68, 정답 코드)
4. 2023 코딩 테스트 트렌드, 2024는?
24
● 자료구조 응용
○ 스택 / 큐 / 딕셔너리 / 우선순위 큐
○ 포인트 : 동일한 동작을 하지만 성능이 다른 메서드 정리 필요
■ 메서드 선택이 당락 결정
■ 주요 메서드 : pop(0) vs popleft() , append() vs + 연산자, join() vs + 연산자
● 대표 문제(풀어보면 좋음)(책에도 있음)
○ 스택 문제 : 짝지어 제거하기(문제 11, 정답 코드), 주식 가격(문제 12, 정답 코드)
○ 큐 문제 : 요세푸스 문제(문제 15, 정답 코드), 기능 개발(문제 16, 정답 코드)
○ 딕셔너리 문제 : 완주 하지 못한 선수(문제 20, 정답 코드), 오픈 채팅방(문제 22, 정답 코드)
○ 우선순위 큐 문제 : 지형 이동(문제 61, 정답 코드)
4. 2023 코딩 테스트 트렌드, 2024는?
25
● 기타 알고리즘
○ 고득점을 위해 필요한 알고리즘, but…
○ 코딩 테스트에서 꼭 고득점을 노릴 필요는 없음
○ 만약 더 공부해야 한다면…
■ 최단 경로 / 트리 / 그리디 / 동적 계획법 등의 알고리즘
● 대표 문제(풀어보면 좋음)(책에도 있음)
○ 최단 경로 문제 : 다익스트라 알고리즘(문제 40, 정답 코드), 배달(문제 44, 정답 코드)
○ 그리디 문제 : 거스름돈 주기(문제 80, 정답 코드), 기지국 설치(문제 85, 정답 코드)
○ 트리 문제 : 트리 순회(문제 26, 정답 코드), 예상 대진표(문제 28, 정답 코드)
○ 동적 계획법 문제 : 2xn 타일링(문제 74, 정답 코드), 도둑질(문제 77, 정답 코드)
26
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
5. 자료구조 + 알고리즘 주요 개념 4가지
27
● 시간 복잡도time complexity
● 코딩 테스트에서 왜 시간 복잡도가 중요한가?
● 시간 복잡도를 어떻게 측정할 것인가?(기본)
○ 점근적 표기법
● 시간 복잡도를 코딩 테스트에 어떻게 적용할 것인가?(실전)
○ 연산 횟수로 알고리즘 선택
○ 입력값으로 알고리즘 선택
5. 자료구조 + 알고리즘 주요 개념 4가지
28
● DFS and BFS
○ DFS와 BFS의 개념, 구현, 응용
○ DFS와 BFS의 비교
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
● 시간 복잡도는 “연산 횟수”를 기준으로 성능을 일반화 함
● 세부적인 “연산 횟수”를 모두 표기하는 것보다 “영향을 가장 많이 끼치는 상한”을 표시(점근적 표기법의 Big-O 표기법)
연산횟수는 n^2 + 3n + 5
n^2
3n
1. n이 커질수록 차수는 의미없음
2. n이 커질수록 3n과 5는 무시할 수 있음
즉 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가지
● 책에 있는 각 자료구조/알고리즘의 시간복잡도를 정리하는게 최우선 입니다!
● 동일한 동작을 하는데 성능이 다른 메서드도 정리가 필요합니다!
● 문제 입력값 분석시 여유 있게 초당 연산횟수를 1,000만 ~ 3,000만 이라고 생각하면 됩니다.
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가지
41
DFS와 BFS
왜 코딩테스트에 많이 나오는가?
5. 자료구조 + 알고리즘 주요 개념 4가지
42
● 코딩테스트는 “알고리즘 지식 평가”가 목적이 아닌, “문제 해결 능력”을 평가하는 시험
● “DFS와 BFS”는 기본적인 자료구조 지식만 있으면 구현할 수 있는 알고리즘이면서, 문제 분석이 제대로 되지 않으면 실수하
는 경우가 많아서 시험에 적합
스택 큐
def a():
a()
재귀
먼저 공부하기
DFS와 BFS중 어떤걸 사용할 것인가?
- 최단경로를 찾는 문제는 BFS
- 백트레킹이 필요한 문제는 DFS
문제 분석하기
5. 자료구조 + 알고리즘 주요 개념 4가지
43
DFS와 BFS
반드시 알아야 할 사전지식
● 사진 지식 공부하기 - 스택과 큐
5. 자료구조 + 알고리즘 주요 개념 4가지
44
스택
FILO
코드 푸시 푸시 푸시 팝 팝 팝
큐
FIFO
코드
푸시 푸시 푸시 팝 팝 팝
● 사진 지식 공부하기 - 함수호출흐름 및 재귀함수
5. 자료구조 + 알고리즘 주요 개념 4가지
① functionA 호출
② functionB 호출
③ functionB 다음으
로 감
함수호출 흐름 재귀함수
재귀호출
종료조건
5. 자료구조 + 알고리즘 주요 개념 4가지
46
DFS와 BFS
DFS 알고리즘
● DFS(깊이우선탐색)
○ 시작 노드를 정합니다.
○ 더 이상 탐색할 노드가 없을 때 까지 갑니다.
○ 더 이상 탐색할 노드가 없으면 최근에 방문할 노드로 되돌아가서 가지 않은 노드로 탐색을 계속 합니다.(백트래킹)
5. 자료구조 + 알고리즘 주요 개념 4가지
백트래킹
백트래킹
● DFS(깊이우선탐색) 구현하기
○ DFS의 핵심인 백트래킹 부터 봅시다.
○ 백트래킹을 어떻게 구현해야 할까요? -> 스택을 활용 -> 콜스택 자체가 스택이므로 재귀를 활용!
스택을 활용한 DFS 예시코드 재귀를 활용한 DFS 예시코드
5. 자료구조 + 알고리즘 주요 개념 4가지
A
B
D
A
B
D
D
A
B
B
최근 방문 노드
최근 방문 노드
● DFS(깊이우선탐색) 구현하기
○ DFS를 재귀로 구현해봅시다
■ 시작노드를 정하고, 아직 방문하지 않은 노드를 탐색하는 과정을 재귀적으로 반복합니다.
■ 더이상 방문할 노드가 없다면, 최근방문한 노드를 방문해서 위 과정을 반복합니다.
5. 자료구조 + 알고리즘 주요 개념 4가지
그래프로 나타내면
1번 노드를 시작으로 DFS
방문
인정한 노드가 있을 경우 해
당 노드를 dfs(재귀)
● DFS(깊이우선탐색) 실제동작(cont’d 1/4)
5. 자료구조 + 알고리즘 주요 개념 4가지
● DFS(깊이우선탐색) 실제동작(cont’d 2/4)
5. 자료구조 + 알고리즘 주요 개념 4가지
● DFS(깊이우선탐색) 실제동작(cont’d 3/4)
5. 자료구조 + 알고리즘 주요 개념 4가지
● DFS(깊이우선탐색) 실제동작(cont’d 4/4)
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
54
DFS와 BFS
BFS 알고리즘
● BFS(너비우선탐색)
○ 시작 노드를 정합니다.
○ 방문한 노드와 인접한 노드를 방문합니다.
○ 각 방문한 노드의 인접한 노드를 모두 방문하고, 이를 반복합니다.
5. 자료구조 + 알고리즘 주요 개념 4가지
● BFS(너비우선탐색) 구현하기
○ BFS의 핵심인 인접한 노드를 모두 방문하는 걸 봅시다.
○ 인정합 노드를 방문하는 동작은-> 큐를 활용 하면 됩니다.
큐를 활용한 BFS 예시코드
5. 자료구조 + 알고리즘 주요 개념 4가지
B
C
B
D
B
E
D
E
C
C D D
E
E
● BFS(너비우선탐색) 구현하기
○ BFS를 재귀로 구현해봅시다
■ 시작노드를 큐에 넣고 방문 처리합니다.
■ 큐에에 노드를 하나꺼내고 방문X 한 노드중 인접한 노드를 방문처리하고 푸시합니다. 이를 반복합니다.
5. 자료구조 + 알고리즘 주요 개념 4가지
그래프로 표현하면
1번 노드를 시작으로 BFS
● BFS(너비우선탐색) 실제동작(cont’d 1/2)
5. 자료구조 + 알고리즘 주요 개념 4가지
● BFS(너비우선탐색) 실제동작(cont’d 2/2)
5. 자료구조 + 알고리즘 주요 개념 4가지
5. 자료구조 + 알고리즘 주요 개념 4가지
60
DFS와 BFS
DFS vs BFS
● DFS(깊이우선탐색) vs BFS(너비우선탐색)
○ DFS만 백트래킹이 있다.
○ BFS가 찾은 해는 시작노드와 가장 가까운 해 라는 것이 보장 된다. (최단 경로)
○ BFS는 인접한 노드를 모두 큐에 담는 방식이다(메모리를 더 많이 사용함)
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
다익스트라 알고리즘
최단경로를 어떻게 구할 것인가?
● 최단경로를 실제 구해보자(어떻게 구할 것인가? 1/2)
○ 최단경로 배열에서 길이가 최소인 정점은 추후 갱신될 여지가 없음
■ 이를 “거치는 노드”로 정의
○ 현재까지 구한 최단경로의 길이와, 거치는 노드를 통한 최단경로를 비교해서 최소로 갱신
5. 자료구조 + 알고리즘 주요 개념 4가지
66
A F
B
C
20
15 900
50
노드 길이 직전
노드
A 0 A
B INF X
C INF X
D INF X
현재 최단경로 배열에서 길이가 최소,”거치는 노드”
-> 거치는 노드를 통한 경로를 체크하는게 최선(그리디적 선택)
각 최단경로는 “거치는 노드”보다 적을수 없음
-> 조합해도 “거치는 노드”보다 적어질수 없음
● 최단경로를 실제 구해보자(어떻게 구할 것인가? 2/2)
○ 최단경로 배열에서 길이가 최소인 정점은 추후 갱신될 여지가 없음
■ 이를 “거치는 노드”로 정의
○ 현재까지 구한 최단경로의 길이와, 거치는 노드를 통한 최단경로를 비교해서 최소로 갱신
5. 자료구조 + 알고리즘 주요 개념 4가지
67
A D
B
C
20
15 900
50
노드 길이 직전
노드
A 0 A
B INF X
C INF X
D INF X
● 최단경로를 실제 구해보자(실제 구하는 과정 1/3)
○ 현재 시작노드로 부터 최단 거리의 노드는 “A”이므로 이를 거치는 노드로 선정
○ 거치는 노드를 통해 {B,D} 최단경로 정보 갱신
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)
● 최단경로를 실제 구해보자(실제 구하는 과정 2/3)
○ 현재 시작노드로 부터 최단 거리의 노드는 “B”이므로 이를 거치는 노드로 선정
○ 거치는 노드를 통해 {B,D} 최단경로 정보 갱신
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)
● 최단경로를 실제 구해보자(실제 구하는 과정 3/3)
○ 이전과 같이 반복하면 최종적으로 아래와 같은 테이블이 완성 됨
○ 시작 노드부터 모든 노드까지 최단 경로 및 길이가 구해짐
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”까지 가는 더 짧은 경로가 발생 함
● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(1/7)
○ 시작노드의 최소비용은 0, 직전노드는 시작노드로 설정
5. 자료구조 + 알고리즘 주요 개념 4가지
74
● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(2/7)
○ 거치는 노드 “A”를 통해 최단경로 갱신
5. 자료구조 + 알고리즘 주요 개념 4가지
75
● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(3/7)
○ 거치는 노드 “E”를 통해 최단경로 갱신
5. 자료구조 + 알고리즘 주요 개념 4가지
76
● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(4/7)
○ 거치는 노드 “C”를 통해 최단경로 갱신
5. 자료구조 + 알고리즘 주요 개념 4가지
77
● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(5/7)
○ 거치는 노드 “B”를 통해 최단경로 갱신(갱신할 경로 없음)
5. 자료구조 + 알고리즘 주요 개념 4가지
78
● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(6/7)
○ 거치는 노드 “D”를 통해 최단경로 갱신(갱신할 경로 없음)
5. 자료구조 + 알고리즘 주요 개념 4가지
79
● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(7/7)
○ 시작노드 “A”에서 각 노드에 대한 최단경로 및 길이가 구해짐
5. 자료구조 + 알고리즘 주요 개념 4가지
80
81
1. 이 책을 쓰게 된 이유
2. 이 책의 특징과 장점, 대상 독자
3. 코딩 테스트 마인드셋
4. 2023 코딩 테스트 트렌드, 2024는?
5. 자료구조 + 알고리즘 주요 개념 4가지
6. 코딩 테스트 주요 문제 풀이 5가지
6. 코딩 테스트 주요 문제 풀이 2가지
82
실전문제 #1 - 짝지어 제거하기
문제 분석
6. 코딩 테스트 주요 문제 풀이 2가지
83
6. 코딩 테스트 주요 문제 풀이 2가지
84
① 알파벳 2개가 붙은 짝 찾음
② 둘을 제거
③ 나머지 문자열 붙임
시간복잡도가 O((len(s)^2)일 경우 시간초과
쓸데 없는 고민은 최대한 줄일수 있음(숫자,특수문
자,대문자 고려할 필요가 없음)
● 문제 분석
○ 문제 요약
■ 소문자로 주어진 문자열의 인접한 문자를 삭제해가면서, 문자열이 전부 삭제가능한지 확인
○ 사용할 알고리즘
■ 문자 삭제 후, 가장 최근의 문자로 돌아가서 다시 탐색하므로 ‘스택”을 활용
○ 중요한 조건
■ 입력값이 최대 100만이므로 O(N^2)알고리즘 사용시 TLE 가능 O(NlogN) 내 알고리즘 고려
■ Only 소문자 이므로, 다른 문자가 들어오는건 고려하지 않음
6. 코딩 테스트 주요 문제 풀이 2가지
85
6. 코딩 테스트 주요 문제 풀이 2가지
86
실전문제 #1 - 짝지어 제거하기
문제 풀이
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
● 문제 접근하기(어떻게 구현할지 고민 해봅시다)
○ 중간 문자열이 삭제된 후 처리를 어떻게 할 것인가?(1 / 3)
■ copy-move 방식은 사람에게 쉬우나, 컴퓨터가 수행시 연산횟수가 많아짐
뒤에 있는 문자열을 그대로 붙이면 .. copy-move가 됩니다. O(N^2), TLE 가능성 존재
b a a x
…..
a
0 1 2 3 N
6. 코딩 테스트 주요 문제 풀이 2가지
89
● 문제 접근하기(어떻게 구현할지 고민 해봅시다)
○ 중간 문자열이 삭제된 후 처리를 어떻게 할 것인가?(2 / 3)
■ 삭제 시, 이전 문자만 알면 됨(전체 문자열을 매번 제어할 필요가 없음)
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가지
91
실전문제 #2 - 게임 맵 최단 거리
문제 분석
6. 코딩 테스트 주요 문제 풀이 2가지
92
6. 코딩 테스트 주요 문제 풀이 2가지
93
DFS가 아닌 BFS를 써야 한다
대각선으로는 움직일 수 없다
맵을 벗어날수 없으므로 불가능
도착할 수 없는 경우도 입력에 주어짐
이게 더 빨리
도착하는데?
이러는 순간
망합니다!
6. 코딩 테스트 주요 문제 풀이 2가지
n*m하면 최대 칸이 10,000개 까지 될수 있음
성능을 크게 고민하지 않고 탐색 알고리즘으로 접근 가
능
사실 당연한 얘기 입니다. 단순히 미로 크기인데 다를 수 없다
는게 이상합니다.
너무 시간은 뺐기지 않되, 뭘 의미하나 한번 고민해보는 정도면
됩니다.
배열은 (0,0) 시작하므로 헷갈리지 않도록 중요 표시해두면 좋음
● 문제 분석
○ 문제 요약
■ 시작점에서 종료지점까지 이동 할때, 최단거리
○ 사용할 알고리즘
■ 최단 거리를 구해야 하므로 “BFS” 알고리즘을 사용
○ 중요한 조건
■ 8방향이 아닌 4방향으로만 이동 가능
■ 맵 밖으로 벗어날 수 없음
■ 도착지점이 없는 미로가 있을수 있음(이 미로가 없다는 제약사항 없음)
6. 코딩 테스트 주요 문제 풀이 2가지
95
6. 코딩 테스트 주요 문제 풀이 2가지
96
실전문제 #2 - 게임 맵 최단 거리
문제 풀이
● 미로 찾는 과정을 도식화 해봅시다.
○ BFS와 유사함
6. 코딩 테스트 주요 문제 풀이 2가지
97
상하좌우 이동을 그
래프로 표현
맵 밖을 벗어나면 더이상 탐색하지 않음
맵 밖을 벗어나면 더이상 탐색하지 않음
하
상
상
좌
좌
우
우
하
굳이 돌아가는 걸 체크할 필요 없음(이미 방문여부 체크 필요) …
…
…
…
…
● 도식화 한 과정을 표현하기 위해 필요한 것을 정리해 봅시다.(BFS를 하되, 최단거리를 저장하면서 함)
○ 이미 방문한 노드인지 확인할 수 있어야 함(distance)
○ 현재 위치를 몇번의 이동으로 확는지 확인할 수 있어야 함(distance)
○ 상하좌우 이동 가능해야 함
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
● 저자가 직접 답변하는 오픈채팅방
● 책과 같이 공부할 수 있는 코드자료
● 코딩 테스트 합격자 되기 - 파이썬 편 구매하기
● 저자가 직접 관리하는 커뮤니티 공간(네이버 카페)
저자와 소통하기
101

More Related Content

What's hot

외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview민태 김
 
모듈 I. 체계적 문제해결 기법
모듈 I. 체계적 문제해결 기법모듈 I. 체계적 문제해결 기법
모듈 I. 체계적 문제해결 기법
Woongseok Yun
 
“ロジカル・プレゼンテーション” で実践的な論理的思考力を身につける
“ロジカル・プレゼンテーション”で実践的な論理的思考力を身につける“ロジカル・プレゼンテーション”で実践的な論理的思考力を身につける
“ロジカル・プレゼンテーション” で実践的な論理的思考力を身につける
bijikin
 
신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비
인서 박
 
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)Yuya Unno
 
How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using RHow to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using R
Satoshi Kato
 
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
Joeun Park
 
大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理
Preferred Networks
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.
Kwangsung Ha
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
Hyosang Hong
 
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
Joeun Park
 
データベース10 - 正規化
データベース10 - 正規化データベース10 - 正規化
データベース10 - 正規化
Kenta Oku
 
학생 개발자, 인턴십으로 성장하기
학생 개발자, 인턴십으로 성장하기학생 개발자, 인턴십으로 성장하기
학생 개발자, 인턴십으로 성장하기
재원 최
 
화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자
Yongho Ha
 
Markdownもはじめよう
MarkdownもはじめようMarkdownもはじめよう
Markdownもはじめよう
masayoshi takahashi
 
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
Yongho Ha
 
Refactoring
RefactoringRefactoring
Refactoring
Artem Tabalin
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법
Kai [Kyung Seok] Song
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
Yongho Ha
 

What's hot (20)

외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview
 
모듈 I. 체계적 문제해결 기법
모듈 I. 체계적 문제해결 기법모듈 I. 체계적 문제해결 기법
모듈 I. 체계적 문제해결 기법
 
“ロジカル・プレゼンテーション” で実践的な論理的思考力を身につける
“ロジカル・プレゼンテーション”で実践的な論理的思考力を身につける“ロジカル・プレゼンテーション”で実践的な論理的思考力を身につける
“ロジカル・プレゼンテーション” で実践的な論理的思考力を身につける
 
신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비
 
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)
企業における自然言語処理技術の活用の現場(情報処理学会東海支部主催講演会@名古屋大学)
 
How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using RHow to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using R
 
セマンティックWebとオントロジー:現状と将来展望
セマンティックWebとオントロジー:現状と将来展望 セマンティックWebとオントロジー:現状と将来展望
セマンティックWebとオントロジー:現状と将来展望
 
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
 
大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
 
データベース10 - 正規化
データベース10 - 正規化データベース10 - 正規化
データベース10 - 正規化
 
학생 개발자, 인턴십으로 성장하기
학생 개발자, 인턴십으로 성장하기학생 개발자, 인턴십으로 성장하기
학생 개발자, 인턴십으로 성장하기
 
화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자
 
Markdownもはじめよう
MarkdownもはじめようMarkdownもはじめよう
Markdownもはじめよう
 
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
 
Refactoring
RefactoringRefactoring
Refactoring
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
 

Similar to 코딩테스트 합격자 되기 연말강의자료(프로그래머스 콜라보)

Automated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep LearningAutomated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep Learning
Soo Kim
 
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
Startlink
 
Coding interview
Coding interviewCoding interview
Coding interview
Soohan Ahn
 
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
HYUNJEONG KIM
 
코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf
ssuser597fbd
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
Suhyun Park
 
세미나
세미나세미나
세미나
Dongyi Kim
 
프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기
인서 박
 
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
SeokhwanMoon
 
Problem Solving GuideBook
Problem Solving GuideBookProblem Solving GuideBook
Problem Solving GuideBook
Hongjun Jang
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
Ahreum Kim
 
(독서광) 알고리즘 퍼즐
(독서광) 알고리즘 퍼즐(독서광) 알고리즘 퍼즐
(독서광) 알고리즘 퍼즐
Jay Park
 
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
Startlink
 
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
Startlink
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
KyeongUkJang
 
알고리즘 문제해결전략 #1
알고리즘 문제해결전략 #1알고리즘 문제해결전략 #1
알고리즘 문제해결전략 #1
Byeongsu Kang
 
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
GDGCampusKorea
 
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
Jay Park
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7KoChungWook
 
C++ 개요와 표준안
C++ 개요와 표준안C++ 개요와 표준안
C++ 개요와 표준안
Jaewon Choi
 

Similar to 코딩테스트 합격자 되기 연말강의자료(프로그래머스 콜라보) (20)

Automated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep LearningAutomated program corrector for programming assignments using Deep Learning
Automated program corrector for programming assignments using Deep Learning
 
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
 
Coding interview
Coding interviewCoding interview
Coding interview
 
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
 
코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
세미나
세미나세미나
세미나
 
프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기
 
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
Pycon Korea 2018 - 비개발자에게 파이썬 가르치기
 
Problem Solving GuideBook
Problem Solving GuideBookProblem Solving GuideBook
Problem Solving GuideBook
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
(독서광) 알고리즘 퍼즐
(독서광) 알고리즘 퍼즐(독서광) 알고리즘 퍼즐
(독서광) 알고리즘 퍼즐
 
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
 
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
 
알고리즘 문제해결전략 #1
알고리즘 문제해결전략 #1알고리즘 문제해결전략 #1
알고리즘 문제해결전략 #1
 
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
 
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
 
C++ 개요와 표준안
C++ 개요와 표준안C++ 개요와 표준안
C++ 개요와 표준안
 

More from ultrasuperrok

코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
ultrasuperrok
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
ultrasuperrok
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
ultrasuperrok
 

More from ultrasuperrok (7)

코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
 
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
 
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
 
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 

코딩테스트 합격자 되기 연말강의자료(프로그래머스 콜라보)

  • 1. 코딩 테스트 합격을 위한 2023년 연말 특강 1 ×
  • 2. 영상은 차주 유투브에 업로 드될 예정입니다. https://www.youtube.com/channel/UCulplOST7XpLnc6xxNFE AoQ 2
  • 4. 4 ● 이 책의 저자 박경록입니다. ● 코딩 테스트 외의 지식을 나누는 것을 좋아합 니다. ● MBTI가 ESTJ 입니다. ● 게으른 개발자를 좋아합니다. 저는…
  • 5. 5 오늘 할 이야기 What to talk about today
  • 6. 6 1. 이 책을 쓰게 된 이유 2. 이 책의 특징과 장점, 대상 독자 3. 코딩 테스트 마인드셋 4. 2023 코딩 테스트 트렌드, 2024는? 5. 자료구조 + 알고리즘 주요 개념 4가지 6. 코딩 테스트 주요 문제 풀이 5가지
  • 7. 1. 이 책을 쓰게 된 이유 “친절한 책을 쓰고 싶었습니다.” 7
  • 8. 1. 이 책을 쓰게 된 이유 “선배의 머릿 속이 궁금했습니다.” 8
  • 9. 1. 이 책을 쓰게 된 이유 “다시 꺼낼 수 있는 책을 만들고 싶었습니다.” 9
  • 10. 10 1. 이 책을 쓰게 된 이유 2. 이 책의 특징과 장점, 대상 독자 3. 코딩 테스트 마인드셋 4. 2023 코딩 테스트 트렌드, 2024는? 5. 자료구조 + 알고리즘 주요 개념 4가지 6. 코딩 테스트 주요 문제 풀이 5가지
  • 11. 2. 이 책의 특징과 장점, 대상 독자 ● 파이썬의 기본 문법을 이해한 사람 대상으로 집필 ○ 파이썬 기본 문법이 약해도 충분히 공부할 수 있도록 지원 ○ 깃허브에 충분한 자료를 지원 11 기본적인 자료구조/알고리즘 코드 꼭 알아야 할 개념이 포함된 코드 (성능측정/자주실수하는 코드 등) 책에 있는 문제의 정답코드
  • 12. 2. 이 책의 특징과 장점, 대상 독자 ● 그림을 충분히 사용 ○ 알고리즘, 입력값을 받고 원하는 출력값을 만드는 과정 ○ 이 과정을 충분히 도식화 12
  • 13. 2. 이 책의 특징과 장점, 대상 독자 ● 바로 정답 코드를 해석하지 않았음 ○ 중요한 건 문제를 분석하고 해석하는 능력 ■ 데이터가 제어되는 과정 ■ 문제 분석, 설계할 수 있는 능력을 공부할 수 있도록 배려 13
  • 14. 2. 이 책의 특징과 장점, 대상 독자 ● 알고리즘 및 자료구조 설명 ○ 연산의 흐름을 충분히 파악할 수 있도록 각 과정들을 상세히 설명 ● 개념 설명 ○ 바로 기출 문제로 가지 않음, 중간 문제를 반드시 배치(저자 기출 문제) ■ 개념을 충분히 익히면서 구현해볼 수 있도록 배려 ○ 실전 문제는 프로그래머스에서 검수한 문제를 다루고 있음 ■ 트렌드를 반영하고 있어 감각을 익히기 좋음 14
  • 15. 15 1. 이 책을 쓰게 된 이유 2. 이 책의 특징과 장점, 대상 독자 3. 코딩 테스트 마인드셋 4. 2023 코딩 테스트 트렌드, 2024는? 5. 자료구조 + 알고리즘 주요 개념 4가지 6. 코딩 테스트 주요 문제 풀이 5가지
  • 16. 3. 코딩 테스트 마인드셋 16 ● 조급하게 하지 말자 ○ 어차피 단기간에 할 수 없음 ○ 조급하면 소중한 시간만 낭비할 따름 ○ 최소한 3개월은 필요, 시간이 충분히 필요함을 인정하고 인내를 가지고 준비
  • 17. 3. 코딩 테스트 마인드셋 17 ● 모든 알고리즘을 다 알아야 한다는 생각을 버리자 ○ 많이 알면 좋음(당연) ○ but… 알고리즘은 끝이 없고, 공부 시간은 제한되어 있음 ■ 전략적으로 접근 ➝ 트렌드는 많이 바뀌지 않음 ➝ 빈출 알고리즘 위주로 공부
  • 18. 3. 코딩 테스트 마인드셋 18 ● 사공이 많으면 배가 산으로 가죠 ○ 주변 친구의 말 너무 따르지 말 것 ○ 주관을 가지고 공부 ○ 대부분 나와 실력 차이가 그렇게 많이 나지 않음 ○ 목표를 명확히, 내가 할 것들에 집중, 꾸준히
  • 19. 3. 코딩 테스트 마인드셋 19 ● 피드백 받기를 두려워 하지 말자 ○ 내가 공부한 내용을 많이 공개하자, 피드백을 많이 받자 ○ 질문을 많이 하자(질문 가이드) ■ 질문을 정리하고 공유하는 건 귀찮다, 근데 공부가 원래 귀찮다(인정하자) ○ 피드백을 위해 들이는 시간을 아까워 하지 말자 ■ 피드백을 통해 잃는 것보다 얻는 게 더 크다 ■ 질문/요청을 작성하면 본인이 한번 읽어보자
  • 20. 20 1. 이 책을 쓰게 된 이유 2. 이 책의 특징과 장점, 대상 독자 3. 코딩 테스트 마인드셋 4. 2023 코딩 테스트 트렌드, 2024는? 5. 자료구조 + 알고리즘 주요 개념 4가지 6. 코딩 테스트 주요 문제 풀이 5가지
  • 21. 4. 2023 코딩 테스트 트렌드, 2024는? 21 ● 코딩 테스트 경향은 바뀌지 않음 ● 코딩 테스트는 개발자의 기본 능력을 평가하는 시험 ● 특정 알고리즘을 알아야 풀 수 있는 문제 X ● 문제를 정확히 이해하고 요구사항을 빠짐없이 구현하는 문제 O
  • 22. 4. 2023 코딩 테스트 트렌드, 2024는? 22 ● 탐색 ○ 단순한 반복 탐색 多 ○ DFS(스택, 재귀) / BFS / 백트래킹 多 ● 대표 문제(풀어보면 좋음)(책에도 있음) ○ 반복 탐색 문제 : 모의고사(문제 4, 정답코드) ○ DFS 문제 : 네트워크(문제 43, 정답코드) , 전력망 둘로 나누기(문제 46, 정답코드) ○ BFS 문제 : 경주로 건설(문제 45, 정답코드) ○ 백트래킹 문제 : 스도쿠 퍼즐(문제 48,정답코드), 피로도(문제 49, 정답코드)
  • 23. 4. 2023 코딩 테스트 트렌드, 2024는? 23 ● 시뮬레이션 ○ 특정 알고리즘 적용 X ○ 이해한 대로 구현 O ○ 좌표 / 배열 / 구현 ● 대표 문제(풀어보면 좋음)(책에도 있음) ○ 좌표 문제 : 캐릭터의 좌표(문제 69, 정답 코드) ○ 배열 문제 : 배열 회전(문제 62, 정답 코드), 전치 행렬(문제 63, 정답 코드) ○ 구현 문제 : 카펫(문제 67, 정답 코드), 점프와 순간이동(문제 68, 정답 코드)
  • 24. 4. 2023 코딩 테스트 트렌드, 2024는? 24 ● 자료구조 응용 ○ 스택 / 큐 / 딕셔너리 / 우선순위 큐 ○ 포인트 : 동일한 동작을 하지만 성능이 다른 메서드 정리 필요 ■ 메서드 선택이 당락 결정 ■ 주요 메서드 : pop(0) vs popleft() , append() vs + 연산자, join() vs + 연산자 ● 대표 문제(풀어보면 좋음)(책에도 있음) ○ 스택 문제 : 짝지어 제거하기(문제 11, 정답 코드), 주식 가격(문제 12, 정답 코드) ○ 큐 문제 : 요세푸스 문제(문제 15, 정답 코드), 기능 개발(문제 16, 정답 코드) ○ 딕셔너리 문제 : 완주 하지 못한 선수(문제 20, 정답 코드), 오픈 채팅방(문제 22, 정답 코드) ○ 우선순위 큐 문제 : 지형 이동(문제 61, 정답 코드)
  • 25. 4. 2023 코딩 테스트 트렌드, 2024는? 25 ● 기타 알고리즘 ○ 고득점을 위해 필요한 알고리즘, but… ○ 코딩 테스트에서 꼭 고득점을 노릴 필요는 없음 ○ 만약 더 공부해야 한다면… ■ 최단 경로 / 트리 / 그리디 / 동적 계획법 등의 알고리즘 ● 대표 문제(풀어보면 좋음)(책에도 있음) ○ 최단 경로 문제 : 다익스트라 알고리즘(문제 40, 정답 코드), 배달(문제 44, 정답 코드) ○ 그리디 문제 : 거스름돈 주기(문제 80, 정답 코드), 기지국 설치(문제 85, 정답 코드) ○ 트리 문제 : 트리 순회(문제 26, 정답 코드), 예상 대진표(문제 28, 정답 코드) ○ 동적 계획법 문제 : 2xn 타일링(문제 74, 정답 코드), 도둑질(문제 77, 정답 코드)
  • 26. 26 1. 이 책을 쓰게 된 이유 2. 이 책의 특징과 장점, 대상 독자 3. 코딩 테스트 마인드셋 4. 2023 코딩 테스트 트렌드, 2024는? 5. 자료구조 + 알고리즘 주요 개념 4가지 6. 코딩 테스트 주요 문제 풀이 5가지
  • 27. 5. 자료구조 + 알고리즘 주요 개념 4가지 27 ● 시간 복잡도time complexity ● 코딩 테스트에서 왜 시간 복잡도가 중요한가? ● 시간 복잡도를 어떻게 측정할 것인가?(기본) ○ 점근적 표기법 ● 시간 복잡도를 코딩 테스트에 어떻게 적용할 것인가?(실전) ○ 연산 횟수로 알고리즘 선택 ○ 입력값으로 알고리즘 선택
  • 28. 5. 자료구조 + 알고리즘 주요 개념 4가지 28 ● DFS and BFS ○ DFS와 BFS의 개념, 구현, 응용 ○ DFS와 BFS의 비교
  • 29. 5. 자료구조 + 알고리즘 주요 개념 4가지 29 ● 다익스트라 ○ 최단 경로를 구한다는 것은 무엇인가? ○ 다익스트라의 목적은 무엇인가? ○ 다익스트라의 세부 동작 ○ 다익스트라의 한계 ■ 벨만-포드 알고리즘
  • 30. 5. 자료구조 + 알고리즘 주요 개념 4가지 30 시간 복잡도 왜 코딩 테스트에서 시간 복잡도가 중요할까?
  • 31. 5. 자료구조 + 알고리즘 주요 개념 4가지 31 ● 코딩테스트에서 합격하려면 “정확성”뿐 아니라 “효율성”까지 만족해야 함, 시간복잡도는 “효율성”을 측정하는 수단 ○ “정확성”은 각 입력값에 대해 실행한 코드와 테스트 케이스의 출력값을 비교해서 일치하는지 확인 ○ “효율성”은 출제자가 의도하는 시간복잡도 내로 코드가 수행되는지 확인 기준 수행시간 코드제출 수행시간 측정 비교
  • 32. 5. 자료구조 + 알고리즘 주요 개념 4가지 32 시간 복잡도 어떻게 측정할 것인가?
  • 33. 5. 자료구조 + 알고리즘 주요 개념 4가지 33 ● 성능은 “연산 횟수”를 기준으로 측정 코드 실행 입력 출력 코드 실행하는 동안 연산횟수를 측정
  • 34. 5. 자료구조 + 알고리즘 주요 개념 4가지 34 ● 성능은 “연산 횟수”를 기준으로 측정 - 간단한 예시(순차탐색으로 배열 원소 찾기) 1 4 2 3 7 8 9 5 배열 원소에 내가 원하는 값이 있는지 탐색 케이스 연산 횟수 찾는 원소가 맨 처음에 있는 경우 1 찾는원소가 중간에 있는 경우 4 찾는 원소가 없는 경우 8 연산횟수 측정 어느정도 연산이 소요되는지는 알수있다. 하지만 그래서 성능이 정 확히 어떻다는 것인가?
  • 35. 5. 자료구조 + 알고리즘 주요 개념 4가지 35 ● 시간 복잡도는 “연산 횟수”를 기준으로 성능을 일반화 함 ● 세부적인 “연산 횟수”를 모두 표기하는 것보다 “영향을 가장 많이 끼치는 상한”을 표시(점근적 표기법의 Big-O 표기법) 연산횟수는 n^2 + 3n + 5 n^2 3n 1. n이 커질수록 차수는 의미없음 2. n이 커질수록 3n과 5는 무시할 수 있음 즉 n^2이 절대적으로 많은 영향을 미침 시간 복잡도는 Big-O 표기로 O(n^2)가 됨
  • 36. 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 미만 그래프)
  • 37. 5. 자료구조 + 알고리즘 주요 개념 4가지 37 ● 빅오 표기법을 연습해 봅시다. 선형탐색,O(x) 행렬곱셈O(x^2) 부분 집합,O(2^x) 트리탐색, O(logx)
  • 38. 5. 자료구조 + 알고리즘 주요 개념 4가지 38 시간 복잡도 어떻게 사용할 것인가?
  • 39. ● 문제에 주어지는 입력값으로 사용할 수 있는 알고리즘 추정 가능 ● 입력값은 많은 힌트를 제공 함. 하지만 시간복잡도를 알아야 이 힌트를 활용할 수 있음. 5. 자료구조 + 알고리즘 주요 개념 4가지 39 O(N^2) 알고리즘으로 풀면 통과하지 못하겠구나! 정답 코드 복잡한 알고리즘을 생각하지 않고, 그냥 구현하 면 되겠구나! 정답 코드
  • 40. 5. 자료구조 + 알고리즘 주요 개념 4가지 ● 책에 있는 각 자료구조/알고리즘의 시간복잡도를 정리하는게 최우선 입니다! ● 동일한 동작을 하는데 성능이 다른 메서드도 정리가 필요합니다! ● 문제 입력값 분석시 여유 있게 초당 연산횟수를 1,000만 ~ 3,000만 이라고 생각하면 됩니다. 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)
  • 41. 5. 자료구조 + 알고리즘 주요 개념 4가지 41 DFS와 BFS 왜 코딩테스트에 많이 나오는가?
  • 42. 5. 자료구조 + 알고리즘 주요 개념 4가지 42 ● 코딩테스트는 “알고리즘 지식 평가”가 목적이 아닌, “문제 해결 능력”을 평가하는 시험 ● “DFS와 BFS”는 기본적인 자료구조 지식만 있으면 구현할 수 있는 알고리즘이면서, 문제 분석이 제대로 되지 않으면 실수하 는 경우가 많아서 시험에 적합 스택 큐 def a(): a() 재귀 먼저 공부하기 DFS와 BFS중 어떤걸 사용할 것인가? - 최단경로를 찾는 문제는 BFS - 백트레킹이 필요한 문제는 DFS 문제 분석하기
  • 43. 5. 자료구조 + 알고리즘 주요 개념 4가지 43 DFS와 BFS 반드시 알아야 할 사전지식
  • 44. ● 사진 지식 공부하기 - 스택과 큐 5. 자료구조 + 알고리즘 주요 개념 4가지 44 스택 FILO 코드 푸시 푸시 푸시 팝 팝 팝 큐 FIFO 코드 푸시 푸시 푸시 팝 팝 팝
  • 45. ● 사진 지식 공부하기 - 함수호출흐름 및 재귀함수 5. 자료구조 + 알고리즘 주요 개념 4가지 ① functionA 호출 ② functionB 호출 ③ functionB 다음으 로 감 함수호출 흐름 재귀함수 재귀호출 종료조건
  • 46. 5. 자료구조 + 알고리즘 주요 개념 4가지 46 DFS와 BFS DFS 알고리즘
  • 47. ● DFS(깊이우선탐색) ○ 시작 노드를 정합니다. ○ 더 이상 탐색할 노드가 없을 때 까지 갑니다. ○ 더 이상 탐색할 노드가 없으면 최근에 방문할 노드로 되돌아가서 가지 않은 노드로 탐색을 계속 합니다.(백트래킹) 5. 자료구조 + 알고리즘 주요 개념 4가지 백트래킹 백트래킹
  • 48. ● DFS(깊이우선탐색) 구현하기 ○ DFS의 핵심인 백트래킹 부터 봅시다. ○ 백트래킹을 어떻게 구현해야 할까요? -> 스택을 활용 -> 콜스택 자체가 스택이므로 재귀를 활용! 스택을 활용한 DFS 예시코드 재귀를 활용한 DFS 예시코드 5. 자료구조 + 알고리즘 주요 개념 4가지 A B D A B D D A B B 최근 방문 노드 최근 방문 노드
  • 49. ● DFS(깊이우선탐색) 구현하기 ○ DFS를 재귀로 구현해봅시다 ■ 시작노드를 정하고, 아직 방문하지 않은 노드를 탐색하는 과정을 재귀적으로 반복합니다. ■ 더이상 방문할 노드가 없다면, 최근방문한 노드를 방문해서 위 과정을 반복합니다. 5. 자료구조 + 알고리즘 주요 개념 4가지 그래프로 나타내면 1번 노드를 시작으로 DFS 방문 인정한 노드가 있을 경우 해 당 노드를 dfs(재귀)
  • 50. ● DFS(깊이우선탐색) 실제동작(cont’d 1/4) 5. 자료구조 + 알고리즘 주요 개념 4가지
  • 51. ● DFS(깊이우선탐색) 실제동작(cont’d 2/4) 5. 자료구조 + 알고리즘 주요 개념 4가지
  • 52. ● DFS(깊이우선탐색) 실제동작(cont’d 3/4) 5. 자료구조 + 알고리즘 주요 개념 4가지
  • 53. ● DFS(깊이우선탐색) 실제동작(cont’d 4/4) 5. 자료구조 + 알고리즘 주요 개념 4가지
  • 54. 5. 자료구조 + 알고리즘 주요 개념 4가지 54 DFS와 BFS BFS 알고리즘
  • 55. ● BFS(너비우선탐색) ○ 시작 노드를 정합니다. ○ 방문한 노드와 인접한 노드를 방문합니다. ○ 각 방문한 노드의 인접한 노드를 모두 방문하고, 이를 반복합니다. 5. 자료구조 + 알고리즘 주요 개념 4가지
  • 56. ● BFS(너비우선탐색) 구현하기 ○ BFS의 핵심인 인접한 노드를 모두 방문하는 걸 봅시다. ○ 인정합 노드를 방문하는 동작은-> 큐를 활용 하면 됩니다. 큐를 활용한 BFS 예시코드 5. 자료구조 + 알고리즘 주요 개념 4가지 B C B D B E D E C C D D E E
  • 57. ● BFS(너비우선탐색) 구현하기 ○ BFS를 재귀로 구현해봅시다 ■ 시작노드를 큐에 넣고 방문 처리합니다. ■ 큐에에 노드를 하나꺼내고 방문X 한 노드중 인접한 노드를 방문처리하고 푸시합니다. 이를 반복합니다. 5. 자료구조 + 알고리즘 주요 개념 4가지 그래프로 표현하면 1번 노드를 시작으로 BFS
  • 58. ● BFS(너비우선탐색) 실제동작(cont’d 1/2) 5. 자료구조 + 알고리즘 주요 개념 4가지
  • 59. ● BFS(너비우선탐색) 실제동작(cont’d 2/2) 5. 자료구조 + 알고리즘 주요 개념 4가지
  • 60. 5. 자료구조 + 알고리즘 주요 개념 4가지 60 DFS와 BFS DFS vs BFS
  • 61. ● DFS(깊이우선탐색) vs BFS(너비우선탐색) ○ DFS만 백트래킹이 있다. ○ BFS가 찾은 해는 시작노드와 가장 가까운 해 라는 것이 보장 된다. (최단 경로) ○ BFS는 인접한 노드를 모두 큐에 담는 방식이다(메모리를 더 많이 사용함) 5. 자료구조 + 알고리즘 주요 개념 4가지 해 해 BFS가 찾는해 DFS가 찾는해 앞 뒤 앞 뒤 앞 뒤 2개 동전 앞뒤 모든 경우 확인-백트래킹 해가 2개있는 경우 DFS vs BFS
  • 62. 5. 자료구조 + 알고리즘 주요 개념 4가지 62 다익스트라 알고리즘 최단경로란 무엇인가?
  • 63. 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까지 가중치를 더한 것과 같다.
  • 64. ● 최단경로 구하기전 고민할 것(과정을 어떻게 표기할 것인가?) ○ 효율적으로 구하기 위해 그래프에 아래와 같이 (최단경로길이/최단경로)를 표기 5. 자료구조 + 알고리즘 주요 개념 4가지 64 A D B C 20 15 900 50 노드 길이 직전 노드 A 0 A B INF X C INF X D INF X 최단경로를 구하기 위해 초기화!
  • 65. 5. 자료구조 + 알고리즘 주요 개념 4가지 65 다익스트라 알고리즘 최단경로를 어떻게 구할 것인가?
  • 66. ● 최단경로를 실제 구해보자(어떻게 구할 것인가? 1/2) ○ 최단경로 배열에서 길이가 최소인 정점은 추후 갱신될 여지가 없음 ■ 이를 “거치는 노드”로 정의 ○ 현재까지 구한 최단경로의 길이와, 거치는 노드를 통한 최단경로를 비교해서 최소로 갱신 5. 자료구조 + 알고리즘 주요 개념 4가지 66 A F B C 20 15 900 50 노드 길이 직전 노드 A 0 A B INF X C INF X D INF X 현재 최단경로 배열에서 길이가 최소,”거치는 노드” -> 거치는 노드를 통한 경로를 체크하는게 최선(그리디적 선택) 각 최단경로는 “거치는 노드”보다 적을수 없음 -> 조합해도 “거치는 노드”보다 적어질수 없음
  • 67. ● 최단경로를 실제 구해보자(어떻게 구할 것인가? 2/2) ○ 최단경로 배열에서 길이가 최소인 정점은 추후 갱신될 여지가 없음 ■ 이를 “거치는 노드”로 정의 ○ 현재까지 구한 최단경로의 길이와, 거치는 노드를 통한 최단경로를 비교해서 최소로 갱신 5. 자료구조 + 알고리즘 주요 개념 4가지 67 A D B C 20 15 900 50 노드 길이 직전 노드 A 0 A B INF X C INF X D INF X
  • 68. ● 최단경로를 실제 구해보자(실제 구하는 과정 1/3) ○ 현재 시작노드로 부터 최단 거리의 노드는 “A”이므로 이를 거치는 노드로 선정 ○ 거치는 노드를 통해 {B,D} 최단경로 정보 갱신 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)
  • 69. ● 최단경로를 실제 구해보자(실제 구하는 과정 2/3) ○ 현재 시작노드로 부터 최단 거리의 노드는 “B”이므로 이를 거치는 노드로 선정 ○ 거치는 노드를 통해 {B,D} 최단경로 정보 갱신 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)
  • 70. ● 최단경로를 실제 구해보자(실제 구하는 과정 3/3) ○ 이전과 같이 반복하면 최종적으로 아래와 같은 테이블이 완성 됨 ○ 시작 노드부터 모든 노드까지 최단 경로 및 길이가 구해짐 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
  • 71. ● 다익스트라는 언제설명하죠? -> 지금 까지 한게 “다익스트라 알고리즘” 입니다. 특징을 정리해봅시다. ○ 시작노드에서 모든 노드까지 최단경로 및 길이를 구함 ○ 매번 아직 선택하지 않은 노드에서 “거치는 노드”를 선택 후, 갱신할 최단경로가 있는지 확인하는 방 식(그리디적 선택) ○ “직전 노드” 과 “현재 노드가 동일할 때까지 계속 이어 가면 “최단 경로”를 알 수 있음 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
  • 72. 5. 자료구조 + 알고리즘 주요 개념 4가지 72 다익스트라 알고리즘 다익스트라를 사용할때 주의할 점
  • 73. ● 다익스트라의 한계 ○ 음의 가중치가 있는 경우, 순간 선택이 최선이라고 보장 할수 없음 ○ 음의 가중치가 있을 경우, “밸만 포드 알고리즘”으로 풀이 5. 자료구조 + 알고리즘 주요 개념 4가지 73 A B C 8 -500 4 D 10 맨 처음 거치는 노드는 “C”이고 이때 경로길이는 4임 하지만 추후 “C”까지 가는 더 짧은 경로가 발생 함
  • 74. ● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(1/7) ○ 시작노드의 최소비용은 0, 직전노드는 시작노드로 설정 5. 자료구조 + 알고리즘 주요 개념 4가지 74
  • 75. ● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(2/7) ○ 거치는 노드 “A”를 통해 최단경로 갱신 5. 자료구조 + 알고리즘 주요 개념 4가지 75
  • 76. ● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(3/7) ○ 거치는 노드 “E”를 통해 최단경로 갱신 5. 자료구조 + 알고리즘 주요 개념 4가지 76
  • 77. ● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(4/7) ○ 거치는 노드 “C”를 통해 최단경로 갱신 5. 자료구조 + 알고리즘 주요 개념 4가지 77
  • 78. ● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(5/7) ○ 거치는 노드 “B”를 통해 최단경로 갱신(갱신할 경로 없음) 5. 자료구조 + 알고리즘 주요 개념 4가지 78
  • 79. ● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(6/7) ○ 거치는 노드 “D”를 통해 최단경로 갱신(갱신할 경로 없음) 5. 자료구조 + 알고리즘 주요 개념 4가지 79
  • 80. ● 이제 정리가 되었으니, 조금 더 복잡한 그래프를 가지고 해볼까요?(7/7) ○ 시작노드 “A”에서 각 노드에 대한 최단경로 및 길이가 구해짐 5. 자료구조 + 알고리즘 주요 개념 4가지 80
  • 81. 81 1. 이 책을 쓰게 된 이유 2. 이 책의 특징과 장점, 대상 독자 3. 코딩 테스트 마인드셋 4. 2023 코딩 테스트 트렌드, 2024는? 5. 자료구조 + 알고리즘 주요 개념 4가지 6. 코딩 테스트 주요 문제 풀이 5가지
  • 82. 6. 코딩 테스트 주요 문제 풀이 2가지 82 실전문제 #1 - 짝지어 제거하기 문제 분석
  • 83. 6. 코딩 테스트 주요 문제 풀이 2가지 83
  • 84. 6. 코딩 테스트 주요 문제 풀이 2가지 84 ① 알파벳 2개가 붙은 짝 찾음 ② 둘을 제거 ③ 나머지 문자열 붙임 시간복잡도가 O((len(s)^2)일 경우 시간초과 쓸데 없는 고민은 최대한 줄일수 있음(숫자,특수문 자,대문자 고려할 필요가 없음)
  • 85. ● 문제 분석 ○ 문제 요약 ■ 소문자로 주어진 문자열의 인접한 문자를 삭제해가면서, 문자열이 전부 삭제가능한지 확인 ○ 사용할 알고리즘 ■ 문자 삭제 후, 가장 최근의 문자로 돌아가서 다시 탐색하므로 ‘스택”을 활용 ○ 중요한 조건 ■ 입력값이 최대 100만이므로 O(N^2)알고리즘 사용시 TLE 가능 O(NlogN) 내 알고리즘 고려 ■ Only 소문자 이므로, 다른 문자가 들어오는건 고려하지 않음 6. 코딩 테스트 주요 문제 풀이 2가지 85
  • 86. 6. 코딩 테스트 주요 문제 풀이 2가지 86 실전문제 #1 - 짝지어 제거하기 문제 풀이
  • 87. 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’ 부터 시작
  • 88. 6. 코딩 테스트 주요 문제 풀이 2가지 88 ● 문제 접근하기(어떻게 구현할지 고민 해봅시다) ○ 중간 문자열이 삭제된 후 처리를 어떻게 할 것인가?(1 / 3) ■ copy-move 방식은 사람에게 쉬우나, 컴퓨터가 수행시 연산횟수가 많아짐 뒤에 있는 문자열을 그대로 붙이면 .. copy-move가 됩니다. O(N^2), TLE 가능성 존재 b a a x ….. a 0 1 2 3 N
  • 89. 6. 코딩 테스트 주요 문제 풀이 2가지 89 ● 문제 접근하기(어떻게 구현할지 고민 해봅시다) ○ 중간 문자열이 삭제된 후 처리를 어떻게 할 것인가?(2 / 3) ■ 삭제 시, 이전 문자만 알면 됨(전체 문자열을 매번 제어할 필요가 없음) 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가 없음)
  • 90. ● 실제 코드 6. 코딩 테스트 주요 문제 풀이 2가지
  • 91. 5. 자료구조 + 알고리즘 주요 개념 4가지 91 실전문제 #2 - 게임 맵 최단 거리 문제 분석
  • 92. 6. 코딩 테스트 주요 문제 풀이 2가지 92
  • 93. 6. 코딩 테스트 주요 문제 풀이 2가지 93 DFS가 아닌 BFS를 써야 한다 대각선으로는 움직일 수 없다 맵을 벗어날수 없으므로 불가능 도착할 수 없는 경우도 입력에 주어짐 이게 더 빨리 도착하는데? 이러는 순간 망합니다!
  • 94. 6. 코딩 테스트 주요 문제 풀이 2가지 n*m하면 최대 칸이 10,000개 까지 될수 있음 성능을 크게 고민하지 않고 탐색 알고리즘으로 접근 가 능 사실 당연한 얘기 입니다. 단순히 미로 크기인데 다를 수 없다 는게 이상합니다. 너무 시간은 뺐기지 않되, 뭘 의미하나 한번 고민해보는 정도면 됩니다. 배열은 (0,0) 시작하므로 헷갈리지 않도록 중요 표시해두면 좋음
  • 95. ● 문제 분석 ○ 문제 요약 ■ 시작점에서 종료지점까지 이동 할때, 최단거리 ○ 사용할 알고리즘 ■ 최단 거리를 구해야 하므로 “BFS” 알고리즘을 사용 ○ 중요한 조건 ■ 8방향이 아닌 4방향으로만 이동 가능 ■ 맵 밖으로 벗어날 수 없음 ■ 도착지점이 없는 미로가 있을수 있음(이 미로가 없다는 제약사항 없음) 6. 코딩 테스트 주요 문제 풀이 2가지 95
  • 96. 6. 코딩 테스트 주요 문제 풀이 2가지 96 실전문제 #2 - 게임 맵 최단 거리 문제 풀이
  • 97. ● 미로 찾는 과정을 도식화 해봅시다. ○ BFS와 유사함 6. 코딩 테스트 주요 문제 풀이 2가지 97 상하좌우 이동을 그 래프로 표현 맵 밖을 벗어나면 더이상 탐색하지 않음 맵 밖을 벗어나면 더이상 탐색하지 않음 하 상 상 좌 좌 우 우 하 굳이 돌아가는 걸 체크할 필요 없음(이미 방문여부 체크 필요) … … … … …
  • 98. ● 도식화 한 과정을 표현하기 위해 필요한 것을 정리해 봅시다.(BFS를 하되, 최단거리를 저장하면서 함) ○ 이미 방문한 노드인지 확인할 수 있어야 함(distance) ○ 현재 위치를 몇번의 이동으로 확는지 확인할 수 있어야 함(distance) ○ 상하좌우 이동 가능해야 함 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
  • 99. ● 실제 코드 6. 코딩 테스트 주요 문제 풀이 2가지
  • 100. ● 문제를 풀때 시간관리는 어떻게 하나요? ● 코딩 테스트 언어 선택은 어떻게 해야 하나요? ● 문제를 풀 때 어떤알고리즘을 활용해야 하는지 빠르게 접근하는 방법을 알 수 있을까요? ● 알고리즘 처음 시작부터 지금까지 고난에서 대처한 마음가짐이 궁금합니다. ● 코딩테스트와 면접에 대한 공부 방식이 조금 달라야 할까요? Q&A 100
  • 101. ● 저자가 직접 답변하는 오픈채팅방 ● 책과 같이 공부할 수 있는 코드자료 ● 코딩 테스트 합격자 되기 - 파이썬 편 구매하기 ● 저자가 직접 관리하는 커뮤니티 공간(네이버 카페) 저자와 소통하기 101

Editor's Notes

  1. 친절한 책을 쓰고 싶었습니다. 문제 자체에 대한 풀이도 중요하지만 수험서의 목적은 실제 시험에서 문제를 풀수 있게 하는 것입니다. 풀이 뿐 아니라 풀이 자체에만 집중하지 않고 문제분석 부터 알고리즘을 설계하는 방식까지 다루는 책을 만들고 싶었습니다.
  2. 대학 시절, 코딩을 잘하는 선배의 머릿속이 궁금했던적이 많습니다. 나랑 똑같은 문제를 봤을때 머릿속에 무엇을 떠올릴지 궁금했습니다. 이걸 알려주는 책을 만들고 싶었습니다.
  3. 당장 시험을 준비해야 하는 분들에게는 시험에 중요한 사항들을 빨리 익힐수 있게 하는게 최우선 목적이긴 하나, 코딩테스트 책이라 할지라도, 코테를 보고 다시 보지 않는 책이 아닌, 개발자의 평생 숙제인 알고리즘/자료구조가 필요할때마다 꺼내볼수 있는 책을 만들고 싶었습니다.
  4. 특정 알고리즘을 알아야 풀 수 있는 문제보다, 문제를 정확히 이해하고 요구사항을 빠짐없이 구현하는 문제가 많이 출제 됨 탐색 단순한 반복문을 통한 탐색(완전탐색,전체를 탐색하는 경우가 많음, 난이도 가장 낮음) DFS/BFS를 통한 탐색(완전탐색,탐색의 목적을 고려해야 함) 백트래킹(탐색의 목적 및 효율까지 고려해야 함,유망함수를 구현해서 성능을 만족시켜야 함) 시뮬레이션(구현 문제) 특정한 알고리즘을 적용하지 않고 이해한 대로 구현하면 됨 좌표/행렬/문자열 관련 문제 자료구조 응용 스택/큐/딕셔너리/우선순위큐를 활용하는 문제 동일한 동작을 하지만, 성능이 다른 메서드 정리 필요(당락 결정) 기타 알고리즘(고득점을 위해 필요) 최단경로,Tree,그리디,동적계획법 등의 알고리즘
  5. 특정 알고리즘을 알아야 풀 수 있는 문제보다, 문제를 정확히 이해하고 요구사항을 빠짐없이 구현하는 문제가 많이 출제 됨 탐색 단순한 반복문을 통한 탐색(완전탐색,전체를 탐색하는 경우가 많음, 난이도 가장 낮음) DFS/BFS를 통한 탐색(완전탐색,탐색의 목적을 고려해야 함) 백트래킹(탐색의 목적 및 효율까지 고려해야 함,유망함수를 구현해서 성능을 만족시켜야 함) 시뮬레이션(구현 문제) 특정한 알고리즘을 적용하지 않고 이해한 대로 구현하면 됨 좌표/행렬/문자열 관련 문제 자료구조 응용 스택/큐/딕셔너리/우선순위큐를 활용하는 문제 동일한 동작을 하지만, 성능이 다른 메서드 정리 필요(당락 결정) 기타 알고리즘(고득점을 위해 필요) 최단경로,Tree,그리디,동적계획법 등의 알고리즘
  6. 특정 알고리즘을 알아야 풀 수 있는 문제보다, 문제를 정확히 이해하고 요구사항을 빠짐없이 구현하는 문제가 많이 출제 됨 탐색 단순한 반복문을 통한 탐색(완전탐색,전체를 탐색하는 경우가 많음, 난이도 가장 낮음) DFS/BFS를 통한 탐색(완전탐색,탐색의 목적을 고려해야 함) 백트래킹(탐색의 목적 및 효율까지 고려해야 함,유망함수를 구현해서 성능을 만족시켜야 함) 시뮬레이션(구현 문제) 특정한 알고리즘을 적용하지 않고 이해한 대로 구현하면 됨 좌표/행렬/문자열 관련 문제 자료구조 응용 스택/큐/딕셔너리/우선순위큐를 활용하는 문제 동일한 동작을 하지만, 성능이 다른 메서드 정리 필요(당락 결정) 기타 알고리즘(고득점을 위해 필요) 최단경로,Tree,그리디,동적계획법 등의 알고리즘
  7. 특정 알고리즘을 알아야 풀 수 있는 문제보다, 문제를 정확히 이해하고 요구사항을 빠짐없이 구현하는 문제가 많이 출제 됨 탐색 단순한 반복문을 통한 탐색(완전탐색,전체를 탐색하는 경우가 많음, 난이도 가장 낮음) DFS/BFS를 통한 탐색(완전탐색,탐색의 목적을 고려해야 함) 백트래킹(탐색의 목적 및 효율까지 고려해야 함,유망함수를 구현해서 성능을 만족시켜야 함) 시뮬레이션(구현 문제) 특정한 알고리즘을 적용하지 않고 이해한 대로 구현하면 됨 좌표/행렬/문자열 관련 문제 자료구조 응용 스택/큐/딕셔너리/우선순위큐를 활용하는 문제 동일한 동작을 하지만, 성능이 다른 메서드 정리 필요(당락 결정) 기타 알고리즘(고득점을 위해 필요) 최단경로,Tree,그리디,동적계획법 등의 알고리즘
  8. 특정 알고리즘을 알아야 풀 수 있는 문제보다, 문제를 정확히 이해하고 요구사항을 빠짐없이 구현하는 문제가 많이 출제 됨 탐색 단순한 반복문을 통한 탐색(완전탐색,전체를 탐색하는 경우가 많음, 난이도 가장 낮음) DFS/BFS를 통한 탐색(완전탐색,탐색의 목적을 고려해야 함) 백트래킹(탐색의 목적 및 효율까지 고려해야 함,유망함수를 구현해서 성능을 만족시켜야 함) 시뮬레이션(구현 문제) 특정한 알고리즘을 적용하지 않고 이해한 대로 구현하면 됨 좌표/행렬/문자열 관련 문제 자료구조 응용 스택/큐/딕셔너리/우선순위큐를 활용하는 문제 동일한 동작을 하지만, 성능이 다른 메서드 정리 필요(당락 결정) 기타 알고리즘(고득점을 위해 필요) 최단경로,Tree,그리디,동적계획법 등의 알고리즘
  9. A가 “거치는 노드”가 됨
  10. A가 “거치는 노드”가 됨
  11. A가 “거치는 노드”가 됨
  12. A가 “거치는 노드”가 됨
  13. A가 “거치는 노드”가 됨
  14. A가 “거치는 노드”가 됨
  15. A가 “거치는 노드”가 됨
  16. A가 “거치는 노드”가 됨
  17. A가 “거치는 노드”가 됨
  18. A가 “거치는 노드”가 됨
  19. A가 “거치는 노드”가 됨
  20. A가 “거치는 노드”가 됨
  21. A가 “거치는 노드”가 됨
  22. A가 “거치는 노드”가 됨
  23. A가 “거치는 노드”가 됨
  24. A가 “거치는 노드”가 됨
  25. A가 “거치는 노드”가 됨
  26. A가 “거치는 노드”가 됨
  27. A가 “거치는 노드”가 됨
  28. A가 “거치는 노드”가 됨
  29. A가 “거치는 노드”가 됨