프로그래밍 문제사이트인 '백준', '프로그래머스'를 기준으로 공부한 방법을 정리함
알고리즘.. 모든걸 이해하며 알아야 할까?
- 어떤 알고리즘의 경우 이해를 바탕으로 사용가능 함
- 어떤 알고리즘의 경우 사용법을 외운 후 이해 또는 이해못해도 계속해서 사용함
- 코딩테스트를 준비하다보면 다양한 알고리즘이 사용됨
- 어떤 알고리즘을 활용하기 위해서는 자료구조를 알아야 함
- 자료구조를 사용하기 위해서는 프로그래밍 언어를 알아야 함
자료구조
- 스택, 큐, 덱, 링크트리스트, 어레이리스트, 트리, 이진트리, 그래프
- 자료구조의 경우 실제 코테에서는 이미 구현된 라이브러리를 가져와 쓰는 경우가 많음
- 최소 한번은 직접 구현해보자.
엔지니어 대한민국- https://www.youtube.com/@eleanorlim/videos
------------------코테에 항상 출제되는 필수 알고리즘-------------
a. 기초정렬, 백트래킹, BFS, DFS (코테를 본다는 기업이라면 무조건 알아야하는 알고리즘)
b. 정렬심화, 투포인터, 이진탐색, 그리디, DP (코테 컷이 낮으면 합격, 높으면 불합격)
c. 다익스트라, MST, 플로이드 등(코테로 불합격할 일은 없음)
백준 문제풀기
- 정답률 40% 이하의 문제의 경우, 다른문제를 먼저 풀거나, 먼저 푼사람의 풀이를 적극적으로 참고하자
- 각각의 단계의 문제를 풀고 동일한 분야의 문제를 더풀고 싶은경우 참고하기
프로그래머스 문제풀기
- 코딩테스트 고득점 Kit (우선은 해당 알고리즘, 자료구조 Lv1 부분만 풀자)
- 백준과 병행하며 자료구조 개념을 이해하고 사용법에 익숙해졌다면 LV2 풀기
https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
1. 프로그래밍 언어의 문법과 사용에 익숙해져야 하는 단계(1주)
백준 단계 | 제목 |
1 | 입출력과 사칙연산 |
2 | 조건문 |
3 | 반복문 |
4 | 1차원 배열 |
5 | 함수 |
6 | 문자열 |
9 | 2차원 배열 |
-> 기본적인 문법을 요구하는 문제들이므로 어렵다고 느끼는경우 프로그래밍 문법을 다시 공부하면서 문제를 풀자
2. 수학적 지식을 사용할 줄 알아야하는 단계(1주)
7 | 기본 수학1 |
8 | 기본 수학2 |
-> 수학적 지식을 요구하는 문제들이므로 필요한 지식을 공부하면서 문제를 풀자
3. 자료구조를 알고 사용할 줄 알아야 하는 단계(2주)
13 | 집합과 맵 |
14 | 기하 1 |
15 | 정수론 및 조합론 |
20 | 스택 |
21 | 큐, 덱 |
-> 해당 자료구조가 동작하는 방식을 알자, 사용하는 언어로 1번은 직접 구현해보자, 사용방법에 익숙해지자
4. 시간 복잡도를 신경써야할 단계( 꾸준하게 )
19 | 그리디 알고리즘 |
10 | 정렬 |
11 | 재귀 |
12 | 브루트포스 |
16 | 백트래킹 |
17 | 동적계획법 |
18 | 누적합 |
23 | 이분 탐색 |
27 | 그래프와 순회 |
24 | 우선순위 큐 |
26 | 스택 2 |
22 | 분할 정복 |
28 | 최단 경로 |
29 | 투 포인터 |
31 | 트리 |