먼저 C언어 기초가 제대로 안 되어 있다면 C언어를 먼저 공부하자.
알고리즘 공부 할 때나, 대회에서는 대부분 C++을 사용하게 한다.
물론 C++ 기능을 다 사용하는게 아니라 C언어 기초 + STL + 일부 편리한 문법 정도만 사용하므로 C 기초랑 STL 사용법만 배워도 상관없다.
그 다음에는 책을 보는게 가장 좋다.
본인이 돈은 많고 책으로는 도저히 이해가 안 된다면 인강을 봐도 되지만, 내 생각에는 책으로 충분함
책은 다음과 같은 책을 추천한다.
(1) 종만북: http://www.yes24.com/24/goods/8006522
처음 시작하는 사람은 무조건 이거 보자. 알고스팟에 문제가 모두 올라가 있어 편리하게 공부할 수 있다.
(2) 노란책: http://www.yes24.com/24/goods/5814363
좀 더 깊게파고 싶을 때 보는 책이다.
(3) 하얀책: http://www.yes24.com/24/goods/42415865
최근에 번역된 책인데, 국가대표 지도자가 써서 그런지 ICPC에 다루는 대부분의 내용이 들어가있다.
어느정도 알고리즘이 익숙한 사람이 ICPC 대비용으로 책을 한 권 사고싶다면 추천한다.
U.Va나 ICPC Archive 문제만 담고 있어서 연습문제를 풀기가 어려운 건 좀 안 좋다.
(4) 빨간책: http://www.yes24.com/24/goods/11259881
탑코더 입문서임. 탑코더 할 생각있으면 사서 보자.
(5) 초록책: http://www.yes24.com/Product/Goods/72274740
(New) 새로 나왔는데 잘 모르겠음. 목차보면 좋긴 함
책을 풀면서 익숙해지면 Online Judge 사이트에 가서 문제를 풀어보거나, 대회를 참가해보자.
+ 알고스팟: 종만북 보면서 했을테니까 생략함
+ 백준 Online Judge: https://acmicpc.net/
문제 풀기 아주 좋은 곳이다. 한국어로 번역도 잘 되어있으며 평균 채점속도도 빠르다. 문제도 잘 추가된다.
Slack(채팅방)을 운영하고 있어, 모르는 문제를 물어보거나, 최근 PS 근황을 알아볼 수 있다. 난 별로 안들어가기는 하는데 도움은 많이 된다고 함.
+ Codeforces: https://codeforces.com/
방대한 양의 ICPC 대회 자료를 가지고 있으며, 자체 대회 퀄리티도 괜찮은 편이다.
주기적으로 대회를 여는데 참가하면 실력 향상에 도움이 된다.
대회 참가에 따른 Rating이 있어 본인의 실력이 어느정도인지 알아볼 수 있다. 또한 이러한 Rating의 증감이 보이므로써 공부 의지를 불태울수있다.
대회는 다음과 같은 대회가 연습하기에 좋다.
COCI
USACO
OI 계열: IOI, APIO, POI, BOI(Balkan), KOI, JOI, ...
공부 순서
보통은 다음의 순서로 배운다고 한다.
01. STL 1: 기초 자료구조 (큐, 스택, 힙, 벡터, 데큐, 맵, 셋 ...)
02. STL 2: 기초 알고리즘 (이분 탐색, 정렬, ...)
03. 그래프 1: BFS, DFS
06. Dijkstra, Floyd, 벨만-포드
07. DP 1
08. 문자열 기초 (KMP, Manacher)
09. 수학 1: 정수론 기초
10. DP 2: 다차원, 메모이제이션, 분할정복
11. 기하 기초
12. 그래프 2: SCC, 2-SAT
13. DP 3: 비트마스크, 기댓값
14. Network Flow, 이분 매칭
15. Segment Tree와 BIT (+ 2D BIT)
16. 문자열 응용 (아호 코라식, Suffix Array)
17. MCMF
18. DP 4: Knuth, CHT, D&C / 아호코라식 DP / 메모리 사용량 줄이기 등 비정형 문제
19. Segment Tree 2: Lazy 이용, Persistent Segment Tree, 2D Segment Tree, Quad Tree, ...
20. 수학 2: FFT
21. BBST (Splay tree) 응용, Link-cut tree, ...
여기 있는거 말고도 HLD나 LCA, Euler Tour, Parallel binary search, Two pointer, Plane sweeping 같은게 있는데 알아서 찾아보셈
참고한 글
+ https://www.slideshare.net/startlinkio/startlinklive-algoshipda
+ http://plzrun.tistory.com/entry/알고리즘-문제풀이PS-시작하기
+ https://www.acmicpc.net/board/view/2593
방학동안 알고리즘 공부 어떻게 해야할지 막막했는데 정보 감사드립니다.
코톡에서 뵛던분이당!
좋은글 감사합니다.. 공지글을 이제야 봤네... (40대 아조씨)
따흑
와 ㅅㅂ 종만북 비트마스크까지 봤을때만 해도 무슨 외계문자 나열해놓은거처럼 느껴졌었는데 다 보고 나서 다시 읽어보니까 웬만한거 다알겠다 ㅋㅋ 기 ㅡ 특
종만북 하고 몇 년 지나고 다시봄?
감사하빈다
감사합니다
감사합니다
제 공부 순서가 많이 꼬였네용 ㅠㅠ
감사합니다
데큐라고 안 하고 뎈이라고 하지 않나 우리 학교에서는 그렇게 가르쳐 주던데
종만북에서도 덱이라고 하던데
최단경로랑 문자열 기초가 너무 앞쪽에 있는듯 여태껏 최단경로를 DP보다 먼저 배운다는 말은 PS 시작한 뒤로 단 한번도 못들어봄 개인적으로 3번 4번 바꾸고 중간부분을 7 10 9 6 8 순서로 두는게 더 낫다고 봄
하얀책은 파란책이 맞지 않음?
노란책 있는 분? ㅠㅠ 머리에 다 있는 분들 중고로 올려주세요!ㅠㅠ 목차도 좋고 설명도 꼼꼼해보이던데...
가끔가다보면 신기하게 도서관에 있습니다. 잘 찾아보세요.
굿
KMP랑 Manacher가 문자열 기초로 치나요?? 오히려 suffix tree가 더 쉬운것 같은...
하얀책은 보통 파란책이라고 하지 않나 글고 이건 좀 어려워보임
떠내려왓군
성지순례
Bye Bye
6년이면 그동안 메타도 꽤 바뀌었을거고 새 공지로 교체될만 하지
그동안 수고하셨습니다