17
Accepted! 2016. 11. 이원철.장홍준. Problem Solving GuideBook AlKor & ALPS 고려대학교

Problem Solving GuideBook

Embed Size (px)

Citation preview

Page 1: Problem Solving GuideBook

Accepted!

2016. 11.

이 원 철 . 장 홍 준 .

Problem SolvingGuideBook

AlKor & ALPS

고려대학교

Page 2: Problem Solving GuideBook

Problem Solving?

논리적, 수학적 문제들에

적합한 자료구조를 이용해 알고리즘을 설계하여

프로그램을 작성하는 일!

Competitive Programming이라고도 함!

Page 3: Problem Solving GuideBook

Index

01 필요한 배경지식

02 참고서적 및 자료

03 연습하는 방법

04 대회 리스트

Page 4: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

1. 기본적인 프로그래밍 언어 구현 능력

C/C++, Java …

2. 자료구조와 알고리즘

스택(Stack), 큐(Queue), 데크(Deque), 힙(Heap),

트리(Tree), 그래프(Graph) …

퇴각검색법, 욕심쟁이 방법, 동적계획법,

트리 or 그래프 관련 알고리즘, 문자열 관련 알고리즘, 기하 관련 알고리즘 …

3. 수학

대수학, 기하학, 조합론 …

Page 5: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

1. 기본적인 프로그래밍 언어 구현 능력

주로 Problem Solving Contest에서는 C/C++ 혹은 Java를 많이 사용한다!

프로그램 수행 시간 측면에서는 C/C++이 유리하다.

Standard Template Library(STL) 사용에 익숙해지면 매우 좋다.

게임에 비유하자면 리그오브레전드에서의 ‘CS 먹기’, 오버워치에서의 ‘에임’과 같다…!

짧은 시간 내에 정확한 프로그램을 구현하는 대회에서 그 중요성은…!!!

Page 6: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

1. 기본적인 프로그래밍 언어 구현 능력

문제를 많이 풀다 보면 자연스럽게 향상된다.

모르는 것을 너무 오래 붙들지 말고, 주변 친구나 커뮤니티에 꼭 물어보자!

백준 온라인 저지의 단계 : https://www.acmicpc.net/step

Dovelet의 30계단 : http://59.23.27.112/30stair/

Page 7: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

2. 자료구조와 알고리즘

알고리즘의 시간복잡도를 줄이기 위한 효과적인 자료구조의 사용이 관건!

Page 8: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

2. 자료구조와 알고리즘

자료구조, 알고리즘의 원리와 쓰임에 대한 깊은 이해가 고난도 문제 풀이의 밑거름!

DFS 탐색↔ 스택(Stack), BFS 탐색↔ 큐(Queue)

선형 탐색 O(N)→ 이분탐색 O(log N)

구간의 최댓값 / 최솟값/ 합 … → 구간 트리

동적 계획법, 그리디 알고리즘: 수많은 문제를 통해 여러 유형을 접해보는 게 중요!

Page 9: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

2. 자료구조와 알고리즘

Dovelet의 30계단 : http://59.23.27.112/30stair/

Startlink의 알고리즘 정기 강의 커리큘럼 : https://goo.gl/Gd3pU7

Startlink의 알고리즘 강의 (유료) : https://code.plus/

Page 10: Problem Solving GuideBook

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

Page 11: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

3. 수학

알고리즘 대회에 필요한 수학 : https://goo.gl/PEcagL

알고리즘 대회에 필요한 기하 : https://goo.gl/ZhZzRu

(수식이 잘 보이지 않는 경우 IE로 보면 된다.)

Page 12: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

1. 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 세트 (구종만 저)

Problem Solving 바이블!

실습 문제들의 난이도가 입문자에겐 다소 어려울 수 있다.

모범 답안에 STL이 많이 사용되어 있으므로 이에 대한 사전 지식이 필요하다.

2. 프로그래밍 콘테스트 챌린징

동경대학의 프로그래밍 경시대회 최상위 실력자들(iwi, wata, kita_masa)이 지은 책

내용이 간결하고 중요한 테크닉을 잘 설명해놓았다.

하지만 번역의 질이 다소 떨어져서 아쉽다고 한다.

3. TopCoder 탑코더 알고리즘 트레이닝

알고리즘 문제 해결 전략 세트보다는 난이도가 낮은 책

모범 답안으로 JAVA, C#, C++이 있다는 것이 장점

기본 개념을 잡기에 충실한 책으로 설명이 쉽고 술술 읽히는 점이 좋다고들 한다.

Page 13: Problem Solving GuideBook

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/

Page 14: Problem Solving GuideBook

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 추천!)

Page 15: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

배경 지식이 부족하다고 느껴질 때!

배경지식이 물론 문제를 해결하는데 필요한 요소이지만, 전부는 아니다.

문제를 풀다가 반드시 필요한 요소가 생기면 찾아서 공부하는 방법 추천!

문제 풀이를 들으면 구현할 줄 알지만, 풀이를 떠올리기가 힘들 때!

풀었던 문제를 일정 시간이 지난 후, 반복해서 풀어보거나 비슷한 방법으로 풀리는,

약간의 변형된 문제들을 찾아 풀어서 해당 유형을 익히는 방법이 있다.

또는 잘하는 친구에게 어떻게 해서 그 풀이를 떠올릴 수 있었는지를 물어보자.

Page 16: Problem Solving GuideBook

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

Page 17: Problem Solving GuideBook

01필요한 배경지식

02참고서적 및 자료

03연습하는 방법

04대회 리스트

Index

1. ACM ICPC

2. Google Codejam

3. Facebook Hacker Cup

4. 삼성 대학생 프로그래밍 경시대회

5. LG CNS CODE MONSTER(대학생 IT 경진대회)

6. 전국 대학생 프로그래밍 대회 동아리 연합 경시대회