Upload
hongjun-jang
View
315
Download
4
Embed Size (px)
Citation preview
Accepted!
2016. 11.
이 원 철 . 장 홍 준 .
Problem SolvingGuideBook
AlKor & ALPS
고려대학교
Problem Solving?
논리적, 수학적 문제들에
적합한 자료구조를 이용해 알고리즘을 설계하여
프로그램을 작성하는 일!
Competitive Programming이라고도 함!
Index
01 필요한 배경지식
02 참고서적 및 자료
03 연습하는 방법
04 대회 리스트
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
1. 기본적인 프로그래밍 언어 구현 능력
C/C++, Java …
2. 자료구조와 알고리즘
스택(Stack), 큐(Queue), 데크(Deque), 힙(Heap),
트리(Tree), 그래프(Graph) …
퇴각검색법, 욕심쟁이 방법, 동적계획법,
트리 or 그래프 관련 알고리즘, 문자열 관련 알고리즘, 기하 관련 알고리즘 …
3. 수학
대수학, 기하학, 조합론 …
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
1. 기본적인 프로그래밍 언어 구현 능력
주로 Problem Solving Contest에서는 C/C++ 혹은 Java를 많이 사용한다!
프로그램 수행 시간 측면에서는 C/C++이 유리하다.
Standard Template Library(STL) 사용에 익숙해지면 매우 좋다.
게임에 비유하자면 리그오브레전드에서의 ‘CS 먹기’, 오버워치에서의 ‘에임’과 같다…!
짧은 시간 내에 정확한 프로그램을 구현하는 대회에서 그 중요성은…!!!
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
1. 기본적인 프로그래밍 언어 구현 능력
문제를 많이 풀다 보면 자연스럽게 향상된다.
모르는 것을 너무 오래 붙들지 말고, 주변 친구나 커뮤니티에 꼭 물어보자!
백준 온라인 저지의 단계 : https://www.acmicpc.net/step
Dovelet의 30계단 : http://59.23.27.112/30stair/
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
2. 자료구조와 알고리즘
알고리즘의 시간복잡도를 줄이기 위한 효과적인 자료구조의 사용이 관건!
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
2. 자료구조와 알고리즘
자료구조, 알고리즘의 원리와 쓰임에 대한 깊은 이해가 고난도 문제 풀이의 밑거름!
DFS 탐색↔ 스택(Stack), BFS 탐색↔ 큐(Queue)
선형 탐색 O(N)→ 이분탐색 O(log N)
구간의 최댓값 / 최솟값/ 합 … → 구간 트리
동적 계획법, 그리디 알고리즘: 수많은 문제를 통해 여러 유형을 접해보는 게 중요!
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
2. 자료구조와 알고리즘
Dovelet의 30계단 : http://59.23.27.112/30stair/
Startlink의 알고리즘 정기 강의 커리큘럼 : https://goo.gl/Gd3pU7
Startlink의 알고리즘 강의 (유료) : https://code.plus/
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
2. 자료구조와 알고리즘
ALPS 세미나 자료
1. C/C++ : https://goo.gl/w2qYFC
2. 기본 자료구조(1) : https://goo.gl/84Uhk4
3. 기본 자료구조(2) : https://goo.gl/OrQjCd
4. 동적계획법 응용 및 연습(1) : https://goo.gl/6u60a7
5. Sqrt Decomposition : https://goo.gl/eT3lQT
6. 네트워크 플로우 : https://goo.gl/8T6qjc
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
3. 수학
알고리즘 대회에 필요한 수학 : https://goo.gl/PEcagL
알고리즘 대회에 필요한 기하 : https://goo.gl/ZhZzRu
(수식이 잘 보이지 않는 경우 IE로 보면 된다.)
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
1. 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 세트 (구종만 저)
Problem Solving 바이블!
실습 문제들의 난이도가 입문자에겐 다소 어려울 수 있다.
모범 답안에 STL이 많이 사용되어 있으므로 이에 대한 사전 지식이 필요하다.
2. 프로그래밍 콘테스트 챌린징
동경대학의 프로그래밍 경시대회 최상위 실력자들(iwi, wata, kita_masa)이 지은 책
내용이 간결하고 중요한 테크닉을 잘 설명해놓았다.
하지만 번역의 질이 다소 떨어져서 아쉽다고 한다.
3. TopCoder 탑코더 알고리즘 트레이닝
알고리즘 문제 해결 전략 세트보다는 난이도가 낮은 책
모범 답안으로 JAVA, C#, C++이 있다는 것이 장점
기본 개념을 잡기에 충실한 책으로 설명이 쉽고 술술 읽히는 점이 좋다고들 한다.
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
4. Topcoder Tutorial
https://www.topcoder.com/community/data-science/data-science-tutorials/
영어로 쓰여진 자료이지만, 질이 매우 높으며 예시 코드와 관련 문제들에 대한 해설 또한 있다.
5. 국내 Problem Solver들의 블로그
잡지 쯤으로 생각하고 읽다 보면 유익한 것들이 많다.
koosaga님의 블로그 : http://amugelab.tistory.com/
myungwoo님의 블로그 : http://blog.myungwoo.kr/
bowbowbow님의 블로그 : http://bowbowbow.tistory.com/
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
1. Online Judge
Baekjoon Online Judge (acmicpc.net)
dovelet (dovelet.com)
algospot (algospot.com)
Lavida Online Judge (judge.lavida.us)
2. Competitive Programming Contests
Codeforces (Codeforces.com)
Topcoder (Web Arena보다는 Java applet 추천!)
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
배경 지식이 부족하다고 느껴질 때!
배경지식이 물론 문제를 해결하는데 필요한 요소이지만, 전부는 아니다.
문제를 풀다가 반드시 필요한 요소가 생기면 찾아서 공부하는 방법 추천!
문제 풀이를 들으면 구현할 줄 알지만, 풀이를 떠올리기가 힘들 때!
풀었던 문제를 일정 시간이 지난 후, 반복해서 풀어보거나 비슷한 방법으로 풀리는,
약간의 변형된 문제들을 찾아 풀어서 해당 유형을 익히는 방법이 있다.
또는 잘하는 친구에게 어떻게 해서 그 풀이를 떠올릴 수 있었는지를 물어보자.
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
실전 대회처럼 연습하고 싶을 때!
Codeforces나 Topcoder에서 정기적으로 열리는 Contest들에 참가하기
Codeforces에선 Virtual Participation이 가능
Topcoder Single Round Match에선 Practice Room에서 연습 가능
Baekjoon Online Judge에서 팀을 생성해 연습 가능
친구가 필요할 때!
Baekjoon Online Judge Slack : https://www.acmicpc.net/board/view/2788
01필요한 배경지식
02참고서적 및 자료
03연습하는 방법
04대회 리스트
Index
1. ACM ICPC
2. Google Codejam
3. Facebook Hacker Cup
4. 삼성 대학생 프로그래밍 경시대회
5. LG CNS CODE MONSTER(대학생 IT 경진대회)
6. 전국 대학생 프로그래밍 대회 동아리 연합 경시대회