일부 단원을 제외하면 각 단원에 대응되는 문제집이 있습니다. 설령 이론을 잘 이해했더라도 문제를 풀어내지 못한다면 아무런 의미가 없기 때문에 반드시 문제를 많이 풀어보셔야 합니다.
문제집의 문제는
-
연습 문제 : 강의 내에서 같이 풀어본 문제
-
기본 문제 : 특별한 응용 없이 강의에서 다룬 내용을 바탕으로 해결할 수 있는 문제
-
응용 문제 : 약간의 응용이 필요해서 난이도가 있는 문제
로 분류됩니다. 기본 문제, 응용 문제 중에서 특히 풀어보길 권장하는 문제는 ✔으로 표시를 해두었습니다.
먼저 강의 내에 있는 제 코드를 참고하지 않고 연습 문제를 풀어봅니다. 그 후에 기본 문제✔까지는 풀어보시는걸 강력하게 권장합니다. 기본 문제✔를 풀 때 아예 풀이를 모르겠다면 아직 학습이 부족한 상태이니 강의를 다시 확인하실 필요가 있습니다.
기본 문제✔를 풀 때 풀이는 떠올릴 수 있지만 구현에서 문제가 생기는 경우라면 정답 코드를 참고해서 구현법을 익힌 후 다른 기본 문제를 풀이 참고 없이 풀면서 구현력을 기르시는걸 추천드립니다.
기본 문제✔를 풀 때 큰 어려움이 없다면 응용 문제✔도 확인해서 문제 해결 능력을 길러보시는걸 추천드립니다. 응용 문제✔ 분류의 문제들은 다소 발상이 어렵거나 새로운 테크닉을 필요로 할 수 있기 때문에 30분-1시간 정도 고민한 후에도 풀이를 모르겠다면 정답 코드나 풀이를 확인해도 괜찮습니다. 그러나 풀이만 확인하고 끝내는 것이 아니고 반드시 풀이를 바탕으로 혼자 힘으로 구현해보는 것을 추천드립니다.
응용 문제✔를 모두 해결했다면 우선 다음 단원으로 넘어가고, 나중에 완강을 한 후 남은 응용 문제를 풀이 참고 없이 도전해보는걸 추천드립니다.
정리하자면 문제집에서 연습 문제, 기본 문제✔, 응용 문제✔ 까지 풀고 다음 단원으로 넘어가는걸 추천드립니다. 응용 문제✔는 풀이를 참고해도 괜찮지만 연습 문제, 기본 문제✔는 강의의 내용을 잘 이해했다면 풀이를 참고하지 않고 구현할 수 있기 때문에 혼자 힘으로 풀어보길 권장합니다. 만약 응용 문제✔를 푸는데에 어려움이 있다면 응용 문제✔ 대신 기본 문제를 더 풀고 다음 단원으로 넘어가도 괜찮습니다.
번호 | 주제 | 진행도 |
---|---|---|
0x00 | 오리엔테이션 (문제집 X) | |
0x01 | 기초 코드 작성 요령 I (문제집 X) | |
0x02 | 기초 코드 작성 요령 II | |
0x03 | 배열 | |
0x04 | 연결 리스트 | |
0x05 | 스택 | |
0x06 | 큐 | |
0x07 | 덱 | |
0x08 | 스택의 활용(수식의 괄호 쌍) | |
0x09 | BFS | |
0x0A | DFS (문제집 X) | |
0x0B | 재귀 | |
0x0C | 백트래킹 | |
0x0D | 시뮬레이션 | |
0x0E | 정렬 I | |
0x0F | 정렬 II | |
0x10 | 다이나믹 프로그래밍 | |
0x11 | 그리디 | |
0x12 | 수학 | |
0x13 | 이분탐색 | |
0x14 | 투 포인터 | |
0x15 | 해시 | |
0x16 | 이진 검색 트리 | |
0x17 | 우선순위 큐 | |
0x18 | 그래프 | |
0x19 | 트리 | |
0x1A | 위상 정렬 | |
0x1B | 최소 신장 트리 | |
0x1C | 플로이드 알고리즘 | |
0x1D | 다익스트라 알고리즘 | |
0x1E | KMP | |
0x1F | 트라이 | |
Appendix A | 문자열 기초 | |
Appendix B | 동적 배열 (문제집 X) | |
Appendix C | 비트마스킹 | |
Appendix D | Union-Find |