102

구종만 - 알고리즘: 기술 사회의 연금술

Embed Size (px)

DESCRIPTION

2002년, 2003년 한국 대학생 프로그래밍 경시대회 금상 2003년, 2004년 세계 대학생 프로그래밍 경시대회 결승 진출 2004년, 2006년, 2008년 구글 코드 잼 결승 진출 2007년 탑코더 오픈 준우승, 2006년 결승 진출 2008년, 2009년 자바 알고리즘 콘테스트 우승 Innotive Corporation Software Engineer NHN Corporation Software Engineer Drw Trading Group Algorithmic Trader Getco Quantitative Email Writer Algospot.com Administrator 알고리즘의 세계는 끝이 없고 같은 실수를 반복하게 되죠. 하지만 구종만님이 출동하면 어떨까? 화려한 수상 경력을 바탕으로 를 쓰신 구종만님께 가장 중요한 10가지 알고리즘을 01회 스쿱미디어 세미나에서 강연하셨습니다.

Citation preview

Page 1: 구종만 - 알고리즘: 기술 사회의 연금술
Page 2: 구종만 - 알고리즘: 기술 사회의 연금술

(진짜로) 안녕하세요?

Page 3: 구종만 - 알고리즘: 기술 사회의 연금술

구종만• 각종 프로그래밍 대회 (옛날~) !

• http://algospot.com (’07~) !

• 알고리즘 문제 해결 전략 (’11) !

• DRW Trading Group (~’09) !

• GETCO (~’13)

Page 4: 구종만 - 알고리즘: 기술 사회의 연금술

Algorithms: 기술 사회의 연금술

@jongman

Page 5: 구종만 - 알고리즘: 기술 사회의 연금술

인물 스무고개 !

(현실 인물, 만화/소설 등장인물)

Page 6: 구종만 - 알고리즘: 기술 사회의 연금술
Page 7: 구종만 - 알고리즘: 기술 사회의 연금술

http://kr.akinator.com/

Page 8: 구종만 - 알고리즘: 기술 사회의 연금술
Page 9: 구종만 - 알고리즘: 기술 사회의 연금술

이미지 리사이징

Page 10: 구종만 - 알고리즘: 기술 사회의 연금술

돌돔 뚊

Page 11: 구종만 - 알고리즘: 기술 사회의 연금술

Context Aware Resizing

Page 12: 구종만 - 알고리즘: 기술 사회의 연금술

http://www.youtube.com/watch?v=c-SSu3tJ3ns

Page 13: 구종만 - 알고리즘: 기술 사회의 연금술

“충분히 진보된 기술은 마법과 구분되지 않는다.”

!

- Arthur C. Clarke

Page 14: 구종만 - 알고리즘: 기술 사회의 연금술

과거의 마법들

Page 15: 구종만 - 알고리즘: 기술 사회의 연금술
Page 16: 구종만 - 알고리즘: 기술 사회의 연금술

놀라운 일들은 어떻게 구현될까?

Page 17: 구종만 - 알고리즘: 기술 사회의 연금술

대중의 인식.jpg

Page 18: 구종만 - 알고리즘: 기술 사회의 연금술

흑마법.jpg

Page 19: 구종만 - 알고리즘: 기술 사회의 연금술

모르는 자에겐 마법이지만 !

아는 자에겐 예술일 뿐!

Page 20: 구종만 - 알고리즘: 기술 사회의 연금술

큰 그림은 알 수 있다!

“검색 엔진? 역색인 만들어서 검색하고, 용량 많으니 분산 처리 잘 하고, 스팸 걸러내기랑 랭킹 신경 잘 써야지.”

“얼굴 인식? 얼굴 윤곽 인식하고, 눈코입 크기랑 위치 사용해서 분류하면 되지.”

Page 21: 구종만 - 알고리즘: 기술 사회의 연금술

전산학이 현대의 마법이라면 !

알고리즘은 그 기초

Page 22: 구종만 - 알고리즘: 기술 사회의 연금술

알고리즘

Page 23: 구종만 - 알고리즘: 기술 사회의 연금술

재미 없는 정의

• 약간은 모호한 정의:

• “컴퓨터가 주어진 작업을 수행하는 방법”

• 소스 코드 != 알고리즘

Page 24: 구종만 - 알고리즘: 기술 사회의 연금술

예제 문제 - 정렬

[6,6,6,8,5,8,7,6,6,7,3] !

을 정렬하면 !

[3,5,6,6,6,6,6,7,7,8,8]

Page 25: 구종만 - 알고리즘: 기술 사회의 연금술

퀵소트 (T. Hoare, 1960)

Page 26: 구종만 - 알고리즘: 기술 사회의 연금술
Page 27: 구종만 - 알고리즘: 기술 사회의 연금술
Page 28: 구종만 - 알고리즘: 기술 사회의 연금술

한 문제를 여러 방법으로 풀 수 있어요

Page 29: 구종만 - 알고리즘: 기술 사회의 연금술

힌트:

DTD

Page 30: 구종만 - 알고리즘: 기술 사회의 연금술

사실 입력은 LG 순위![6, 6, 6, 8, 5, 8, 7, 6, 6, 7, 3]

Page 31: 구종만 - 알고리즘: 기술 사회의 연금술

빈도 수를 세자[6, 6, 6, 8, 5, 8, 7, 6, 6, 7, 3]

{3: 1, 5: 1, 6: 5, 7: 2, 8: 2}

Page 32: 구종만 - 알고리즘: 기술 사회의 연금술

정렬 결과 복구![6, 6, 6, 8, 5, 8, 7, 6, 6, 7, 3]

{3: 1, 5: 1, 6: 5, 7: 2, 8: 2}

[3, 5, 6, 6, 6, 6, 6, 7, 7, 8, 8]

Page 33: 구종만 - 알고리즘: 기술 사회의 연금술
Page 34: 구종만 - 알고리즘: 기술 사회의 연금술

새 알고리즘 고안 과정

Page 35: 구종만 - 알고리즘: 기술 사회의 연금술

주식투자

Page 36: 구종만 - 알고리즘: 기술 사회의 연금술

가락동의 현인!

Page 37: 구종만 - 알고리즘: 기술 사회의 연금술

저의 미래.jpg

Page 38: 구종만 - 알고리즘: 기술 사회의 연금술

가장 돈을 많이 번 구간을 찾아보자!

Page 39: 구종만 - 알고리즘: 기술 사회의 연금술

다 해본다!….

….

….

….

….

….

Page 40: 구종만 - 알고리즘: 기술 사회의 연금술
Page 41: 구종만 - 알고리즘: 기술 사회의 연금술

성능 측정

Page 42: 구종만 - 알고리즘: 기술 사회의 연금술

성능 측정

입력 크기 simple()1천 0.17초

Page 43: 구종만 - 알고리즘: 기술 사회의 연금술

성능 측정

입력 크기 simple()1천 0.17초1만 16초

Page 44: 구종만 - 알고리즘: 기술 사회의 연금술

성능 측정

입력 크기 simple()1천 0.17초1만 16초

10만 1568초

Page 45: 구종만 - 알고리즘: 기술 사회의 연금술

성능 측정

입력 크기 simple()1천 0.17초1만 16초

10만 1568초100만 (약) 43시간

1000만 (약) 181일

Page 46: 구종만 - 알고리즘: 기술 사회의 연금술
Page 47: 구종만 - 알고리즘: 기술 사회의 연금술

새 아이디어: 각개격파

Page 48: 구종만 - 알고리즘: 기술 사회의 연금술

반으로 쪼개자!

정답 구간은:

• 왼쪽 절반에 있거나, 오른쪽 절반에 있거나

• 왼쪽에서 시작 - 오른쪽에서 끝

= +

Page 49: 구종만 - 알고리즘: 기술 사회의 연금술

걸쳐 있는 경우

Page 50: 구종만 - 알고리즘: 기술 사회의 연금술
Page 51: 구종만 - 알고리즘: 기술 사회의 연금술

성능 측정

입력 크기 simple() divide…()1천 0.17초 0.002초1만 16초 0.02초

10만 1568초 0.2초100만 (약) 43시간 3초

1000만 (약) 181일 27초

Page 52: 구종만 - 알고리즘: 기술 사회의 연금술

새 아이디어: 최대값 - 최소값

Page 53: 구종만 - 알고리즘: 기술 사회의 연금술

문제:

Page 54: 구종만 - 알고리즘: 기술 사회의 연금술

아.. 안돼

Page 55: 구종만 - 알고리즘: 기술 사회의 연금술

지금까지의 최소값!

Page 56: 구종만 - 알고리즘: 기술 사회의 연금술
Page 57: 구종만 - 알고리즘: 기술 사회의 연금술

성능 측정

입력 크기 simple() divide…() fast()1천 0.17초 0.002초 0.000008초1만 16초 0.02초 0.008초

10만 1568초 0.2초 0.08초100만 (약) 43시간 3초 0.8초

1000만 (약) 181일 27초 8초

Page 58: 구종만 - 알고리즘: 기술 사회의 연금술

교훈

• 같은 문제를 푸는 여러 방법들 간에 큰 성능 차이가 있다!

• 입력이 커지면 커질 수록 알고리즘간의 성능 차이는 커진다!

Page 59: 구종만 - 알고리즘: 기술 사회의 연금술

아까 보여준거랑 너무 차이나는데요?

Page 60: 구종만 - 알고리즘: 기술 사회의 연금술

천릿길도 한 걸음부터

• 간단한 알고리즘은 어려운 알고리즘의 구성 요소가 된다

• 많은 알고리즘은 설계 “기법” 혹은 “원칙”들을 공유한다

• Akinator와 리사이징도 알고 보면 간단!

Page 61: 구종만 - 알고리즘: 기술 사회의 연금술

Akinator 파헤치기

Page 62: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

표로 만들어 보기

Page 63: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

첫 번째 질문?

Page 64: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

첫 번째 질문?

Page 65: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

두 번째 질문?

Page 66: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

두 번째 질문?

Page 67: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

새 정보 받아들이기

Page 68: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

“이 둘을 어떻게 구분하나요?”

Page 69: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

가수? 🔵 🔴

사용자 입력

Page 70: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

가수? 🔵 🔴

부분적 정보에서 배우기

Page 71: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

가수? 🔵 🔴

괜히 한번 물어보기

Page 72: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

가수? 🔵 🔴

괜히 한번 물어보기

Page 73: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

가수? 🔵 🔴

결과가 이랬다면

Page 74: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 🔵 🔵 🔴 🔴 🔵 🔵 🔵 🔵

30세 이상? 🔴 🔵 🔵 🔵 🔵 🔴 🔵 🔴

정치인? 🔴 🔵 🔵 🔵 🔴 🔴 🔴 🔵

미국인? 🔴 🔴 🔵 🔴 🔵 🔴 🔵 🔴

가수? 🔵 🔴 🔴

아하!

Page 75: 구종만 - 알고리즘: 기술 사회의 연금술

불확실성 해결하기

• “김정은은 정치인인가요?”

• “엘사는 정치인인가요?”

• “김정은이 작년에 30살이 되었어요!”

• “잘생겼습니까?”

Page 76: 구종만 - 알고리즘: 기술 사회의 연금술

여자? 100% 100% 0% 0% 100% 100% 100% 100%

30세 이상? 0% 100% 100% 80% 90% 0% 100% 0%

정치인? 0% 100% 100% 100% 0% 0% 0% 70%

미국인? 0% 0% 100% 0% 100% 20% 100% 10%

모든 것을 확률로

Page 77: 구종만 - 알고리즘: 기술 사회의 연금술

이미지 리사이징 파헤치기

Page 78: 구종만 - 알고리즘: 기술 사회의 연금술

아이디어: 한번에 한칸만 지워보자

Page 79: 구종만 - 알고리즘: 기술 사회의 연금술

어느 칸을 줄일까?

Page 80: 구종만 - 알고리즘: 기술 사회의 연금술

아이디어: 제일 티 안나게!

Page 81: 구종만 - 알고리즘: 기술 사회의 연금술

“티 안난다”의 정의

Page 82: 구종만 - 알고리즘: 기술 사회의 연금술

“티 안난다”의 정의

Page 83: 구종만 - 알고리즘: 기술 사회의 연금술

“티 안난다”의 정의

Page 84: 구종만 - 알고리즘: 기술 사회의 연금술

1 2 2 2 1 0 2 2 0 4 4 0 1 1 0 0 1 2 3 1 1 0 3 1 1 1 0 0 0 1

0 1 2 3 2 0 2 2 0 5 4 1 1 1 0 0 1 2 3 0 1 0 2 0 1 0 0 0 0 0

1 1 1 3 3 0 2 2 1 4 3 1 2 1 0 0 0 3 4 1 1 0 1 1 0 0 0 0 0 0

1 1 1 4 4 0 1 1 1 4 2 0 2 2 0 1 0 2 4 1 1 1 1 1 0 1 0 0 0 0

1 1 1 3 4 1 0 1 1 3 2 0 2 2 0 1 1 2 4 2 2 2 1 1 1 1 0 0 0 1

1 1 1 2 3 1 1 0 1 3 2 0 1 1 0 0 1 1 4 2 2 2 0 1 2 1 1 1 1 1

1 1 1 2 2 1 1 1 2 3 1 1 1 1 0 0 1 0 4 2 3 1 0 2 2 0 1 0 0 0

1 1 1 2 2 0 1 0 3 3 1 0 1 0 0 0 1 0 4 2 3 1 0 2 2 0 1 0 0 0

1 0 1 2 2 1 0 0 2 2 1 0 0 0 0 0 2 1 4 2 3 0 1 2 1 0 0 0 0 0

1 1 1 2 1 1 0 1 2 2 1 0 0 0 1 0 2 1 3 1 3 0 2 2 0 0 0 0 0 0

1 1 1 2 1 1 0 1 2 1 1 0 0 0 1 1 2 0 2 1 2 0 3 2 1 1 0 0 0 1

1 1 1 2 1 0 0 1 1 1 1 0 0 0 0 1 2 0 2 1 2 0 3 1 1 1 0 0 1 1

1 1 2 2 1 0 0 1 1 1 1 0 0 0 0 1 2 0 3 1 2 0 2 1 1 2 0 0 1 1

1 1 2 2 1 0 0 1 0 1 1 0 0 0 0 2 2 0 3 1 2 0 2 1 0 1 0 0 1 0

1 1 1 2 1 0 0 1 0 1 1 0 0 0 0 1 2 0 3 1 2 0 1 1 0 1 0 0 0 1

1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 3 2 2 0 1 0 0 0 1 0 0 1

1 2 2 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 3 2 2 0 0 1 1 0 1 0 1 0

1 2 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 3 2 1 0 0 0 1 0 2 0 1 0

1 2 1 1 1 0 0 0 0 0 0 1 0 0 0 2 1 0 3 2 1 1 0 0 1 0 1 0 1 0

1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 2 1 1 3 3 1 2 0 0 0 0 1 0 1 0

1 0 1 2 0 0 1 0 0 1 1 2 1 0 0 2 1 1 3 3 2 2 0 0 0 0 1 0 1 0

2 1 1 2 1 1 1 1 0 0 1 2 2 1 0 3 1 1 2 1 2 1 0 0 0 0 1 0 1 0

1 1 1 2 1 1 1 1 1 1 0 1 2 2 0 2 1 0 2 1 1 1 0 0 0 1 0 1 1 0

1 1 0 1 0 0 1 1 2 1 0 0 2 2 0 2 2 1 2 1 1 1 0 0 0 1 0 0 1 1

1 1 0 1 0 0 0 2 2 2 1 0 2 2 0 2 2 1 1 1 1 1 0 0 1 1 0 0 0 1

1 1 0 1 1 1 0 1 2 2 1 0 1 2 0 2 2 0 0 0 1 1 0 1 1 2 0 0 0 2

1 1 0 1 1 0 0 1 2 3 2 0 1 2 0 1 2 1 0 0 1 1 0 1 2 2 0 0 1 1

0 1 1 0 0 0 0 0 1 2 2 1 0 1 0 1 1 2 1 1 2 1 1 1 3 2 1 0 0 1

0 1 1 0 0 0 0 0 1 2 1 1 0 0 0 0 0 1 2 0 3 1 1 0 3 1 1 0 0 0

Page 85: 구종만 - 알고리즘: 기술 사회의 연금술

1 2 2 2 1 0 2 2 0 4 4 0 1 1 0 0 1 2 3 1 1 0 3 1 1 1 0 0 0 1

0 1 2 3 2 0 2 2 0 5 4 1 1 1 0 0 1 2 3 0 1 0 2 0 1 0 0 0 0 0

1 1 1 3 3 0 2 2 1 4 3 1 2 1 0 0 0 3 4 1 1 0 1 1 0 0 0 0 0 0

1 1 1 4 4 0 1 1 1 4 2 0 2 2 0 1 0 2 4 1 1 1 1 1 0 1 0 0 0 0

1 1 1 3 4 1 0 1 1 3 2 0 2 2 0 1 1 2 4 2 2 2 1 1 1 1 0 0 0 1

1 1 1 2 3 1 1 0 1 3 2 0 1 1 0 0 1 1 4 2 2 2 0 1 2 1 1 1 1 1

1 1 1 2 2 1 1 1 2 3 1 1 1 1 0 0 1 0 4 2 3 1 0 2 2 0 1 0 0 0

1 1 1 2 2 0 1 0 3 3 1 0 1 0 0 0 1 0 4 2 3 1 0 2 2 0 1 0 0 0

1 0 1 2 2 1 0 0 2 2 1 0 0 0 0 0 2 1 4 2 3 0 1 2 1 0 0 0 0 0

1 1 1 2 1 1 0 1 2 2 1 0 0 0 1 0 2 1 3 1 3 0 2 2 0 0 0 0 0 0

1 1 1 2 1 1 0 1 2 1 1 0 0 0 1 1 2 0 2 1 2 0 3 2 1 1 0 0 0 1

1 1 1 2 1 0 0 1 1 1 1 0 0 0 0 1 2 0 2 1 2 0 3 1 1 1 0 0 1 1

1 1 2 2 1 0 0 1 1 1 1 0 0 0 0 1 2 0 3 1 2 0 2 1 1 2 0 0 1 1

1 1 2 2 1 0 0 1 0 1 1 0 0 0 0 2 2 0 3 1 2 0 2 1 0 1 0 0 1 0

1 1 1 2 1 0 0 1 0 1 1 0 0 0 0 1 2 0 3 1 2 0 1 1 0 1 0 0 0 1

1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 3 2 2 0 1 0 0 0 1 0 0 1

1 2 2 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 3 2 2 0 0 1 1 0 1 0 1 0

1 2 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 3 2 1 0 0 0 1 0 2 0 1 0

1 2 1 1 1 0 0 0 0 0 0 1 0 0 0 2 1 0 3 2 1 1 0 0 1 0 1 0 1 0

1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 2 1 1 3 3 1 2 0 0 0 0 1 0 1 0

1 0 1 2 0 0 1 0 0 1 1 2 1 0 0 2 1 1 3 3 2 2 0 0 0 0 1 0 1 0

2 1 1 2 1 1 1 1 0 0 1 2 2 1 0 3 1 1 2 1 2 1 0 0 0 0 1 0 1 0

1 1 1 2 1 1 1 1 1 1 0 1 2 2 0 2 1 0 2 1 1 1 0 0 0 1 0 1 1 0

1 1 0 1 0 0 1 1 2 1 0 0 2 2 0 2 2 1 2 1 1 1 0 0 0 1 0 0 1 1

1 1 0 1 0 0 0 2 2 2 1 0 2 2 0 2 2 1 1 1 1 1 0 0 1 1 0 0 0 1

1 1 0 1 1 1 0 1 2 2 1 0 1 2 0 2 2 0 0 0 1 1 0 1 1 2 0 0 0 2

1 1 0 1 1 0 0 1 2 3 2 0 1 2 0 1 2 1 0 0 1 1 0 1 2 2 0 0 1 1

0 1 1 0 0 0 0 0 1 2 2 1 0 1 0 1 1 2 1 1 2 1 1 1 3 2 1 0 0 1

0 1 1 0 0 0 0 0 1 2 1 1 0 0 0 0 0 1 2 0 3 1 1 0 3 1 1 0 0 0

Page 86: 구종만 - 알고리즘: 기술 사회의 연금술

천릿길도 한 걸음부터 #2• 이미지 높이가 한 줄이라고 생각해 봅시다

2 2 1 0 0 2 2 1 0 0 0

2 1 1 0 1 2 2 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 87: 구종만 - 알고리즘: 기술 사회의 연금술

천릿길도 한 걸음부터 #2• 생각할 것도 없네

2 2 1 0 0 2 2 1 0 0 0

2 1 1 0 1 2 2 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 88: 구종만 - 알고리즘: 기술 사회의 연금술

천릿길도 두 걸음부터• 이미지가 두 줄이라고 생각해 봅시다

2 2 1 0 0 2 2 1 0 0 0

2 1 1 0 1 2 2 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 89: 구종만 - 알고리즘: 기술 사회의 연금술

천릿길도 1.1 걸음부터• 두 번째 줄의 한 칸만 생각해 봅시다

2 2 1 0 0 2 2 1 0 0 0

2 1 1 0 1 2 2 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 90: 구종만 - 알고리즘: 기술 사회의 연금술

천릿길도 1.1 걸음부터• 여기까지 내려오는 가장 짧은 경로는?

2 2 1 0 0 2 2 1 0 0 0

2 1 1 0 1 2 2 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 91: 구종만 - 알고리즘: 기술 사회의 연금술

천릿길도 1.1 걸음부터• 최소 합은 1이구나!

2 2 1 0 0 2 2 1 0 0 0

2 1 1 0 1 2 2 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 92: 구종만 - 알고리즘: 기술 사회의 연금술

이제 2 걸음• 모든 칸에 대해 최소 합을 갱신

2 2 1 0 0 2 2 1 0 0 0

4 2 1 0 1 2 3 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 93: 구종만 - 알고리즘: 기술 사회의 연금술

2.1 걸음• 빨간 칸까지 내려오는 가장 작은 경로 합은?

2 2 1 0 0 2 2 1 0 0 0

4 2 1 0 1 2 3 1 0 0 0

2 1 1 0 1 2 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 94: 구종만 - 알고리즘: 기술 사회의 연금술

네 3입니다!• 이렇게 반복하면 최단 경로를 찾을 수 있어요

2 2 1 0 0 2 2 1 0 0 0

4 2 1 0 1 2 3 1 0 0 0

2 1 1 0 1 3 1 1 0 0 0

2 1 0 0 1 1 1 1 0 0 0

….

Page 95: 구종만 - 알고리즘: 기술 사회의 연금술

참 쉽죠?

Page 96: 구종만 - 알고리즘: 기술 사회의 연금술

결론

Page 97: 구종만 - 알고리즘: 기술 사회의 연금술

세상을 바꾸는 힘

• 좋은 식견을 갖춘 개발자의 중요 요건

• 밖에서 보면 놀라워도

• 직접 해 보면 비교적 쉽다

• 재미나게 공부해서 더 좋은 개발자가 되자!

Page 98: 구종만 - 알고리즘: 기술 사회의 연금술

어떻게 공부하나?

Page 99: 구종만 - 알고리즘: 기술 사회의 연금술

어떻게 공부하나?

Page 100: 구종만 - 알고리즘: 기술 사회의 연금술

프로그래밍 대회

Page 101: 구종만 - 알고리즘: 기술 사회의 연금술

책광고한권만 사주십쇼

(굽신굽신)

Page 102: 구종만 - 알고리즘: 기술 사회의 연금술

감사합니다