O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

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

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Differentiable Neural Computer
Differentiable Neural Computer
Carregando em…3
×

Confira estes a seguir

1 de 102 Anúncio

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

Baixar para ler offline

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회 스쿱미디어 세미나에서 강연하셨습니다.

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회 스쿱미디어 세미나에서 강연하셨습니다.

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Quem viu também gostou (12)

Anúncio

Mais recentes (20)

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

  1. 1. (진짜로) 안녕하세요?
  2. 2. 구종만 • 각종 프로그래밍 대회 (옛날~) ! • http://algospot.com (’07~) ! • 알고리즘 문제 해결 전략 (’11) ! • DRW Trading Group (~’09) ! • GETCO (~’13)
  3. 3. Algorithms: 기술 사회의 연금술 @jongman
  4. 4. 인물 스무고개 ! (현실 인물, 만화/소설 등장인물)
  5. 5. http://kr.akinator.com/
  6. 6. 이미지 리사이징
  7. 7. 돌돔 뚊
  8. 8. Context Aware Resizing
  9. 9. http://www.youtube.com/watch?v=c-SSu3tJ3ns
  10. 10. “충분히 진보된 기술은 마법과 구분되지 않는다.” ! - Arthur C. Clarke
  11. 11. 과거의 마법들
  12. 12. 놀라운 일들은 어떻게 구현될까?
  13. 13. 대중의 인식.jpg
  14. 14. 흑마법.jpg
  15. 15. 모르는 자에겐 마법이지만 ! 아는 자에겐 예술일 뿐!
  16. 16. 큰 그림은 알 수 있다! “검색 엔진? 역색인 만들어서 검색하고, 용량 많 으니 분산 처리 잘 하고, 스팸 걸러내기랑 랭킹 신경 잘 써야지.” “얼굴 인식? 얼굴 윤곽 인식하고, 눈코입 크기랑 위치 사용해서 분류하면 되지.”
  17. 17. 전산학이 현대의 마법이라면 ! 알고리즘은 그 기초
  18. 18. 알고리즘
  19. 19. 재미 없는 정의 • 약간은 모호한 정의: • “컴퓨터가 주어진 작업을 수행하는 방법” • 소스 코드 != 알고리즘
  20. 20. 예제 문제 - 정렬 [6,6,6,8,5,8,7,6,6,7,3] ! 을 정렬하면 ! [3,5,6,6,6,6,6,7,7,8,8]
  21. 21. 퀵소트 (T. Hoare, 1960)
  22. 22. 한 문제를 여러 방법으로 풀 수 있어요
  23. 23. 힌트: DTD
  24. 24. 사실 입력은 LG 순위! [6, 6, 6, 8, 5, 8, 7, 6, 6, 7, 3]
  25. 25. 빈도 수를 세자 [6, 6, 6, 8, 5, 8, 7, 6, 6, 7, 3] {3: 1, 5: 1, 6: 5, 7: 2, 8: 2}
  26. 26. 정렬 결과 복구! [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]
  27. 27. 새 알고리즘 고안 과정
  28. 28. 주식투자
  29. 29. 가락동의 현인!
  30. 30. 저의 미래.jpg
  31. 31. 가장 돈을 많이 번 구간을 찾아보자!
  32. 32. 다 해본다! …. …. …. …. …. ….
  33. 33. 성능 측정
  34. 34. 성능 측정 입력 크기 simple() 1천 0.17초
  35. 35. 성능 측정 입력 크기 simple() 1천 0.17초 1만 16초
  36. 36. 성능 측정 입력 크기 simple() 1천 0.17초 1만 16초 10만 1568초
  37. 37. 성능 측정 입력 크기 simple() 1천 0.17초 1만 16초 10만 1568초 100만 (약) 43시간 1000만 (약) 181일
  38. 38. 새 아이디어: 각개격파
  39. 39. 반으로 쪼개자! 정답 구간은: = + • 왼쪽 절반에 있거나, 오른쪽 절반에 있거나 • 왼쪽에서 시작 - 오른쪽에서 끝
  40. 40. 걸쳐 있는 경우
  41. 41. 성능 측정 입력 크기 simple() divide…() 1천 0.17초 0.002초 1만 16초 0.02초 10만 1568초 0.2초 100만 (약) 43시간 3초 1000만 (약) 181일 27초
  42. 42. 새 아이디어: 최대값 - 최소값
  43. 43. 문제:
  44. 44. 아.. 안돼
  45. 45. 지금까지의 최소값!
  46. 46. 성능 측정 입력 크기 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초
  47. 47. 교훈 • 같은 문제를 푸는 여러 방법들 간에 큰 성능 차 이가 있다! • 입력이 커지면 커질 수록 알고리즘간의 성능 차 이는 커진다!
  48. 48. 아까 보여준거랑 너무 차이나는데요?
  49. 49. 천릿길도 한 걸음부터 • 간단한 알고리즘은 어려운 알고리즘의 구성 요 소가 된다 • 많은 알고리즘은 설계 “기법” 혹은 “원칙”들을 공유한다 • Akinator와 리사이징도 알고 보면 간단!
  50. 50. Akinator 파헤치기
  51. 51. 표로 만들어 보기 여자?         30세 이상?         정치인?         미국인?        
  52. 52. 첫 번째 질문? 여자?         30세 이상?         정치인?         미국인?        
  53. 53. 첫 번째 질문? 여자?         30세 이상?         정치인?         미국인?        
  54. 54. 두 번째 질문? 여자?         30세 이상?         정치인?         미국인?        
  55. 55. 두 번째 질문? 여자?         30세 이상?         정치인?         미국인?        
  56. 56. 새 정보 받아들이기 여자?         30세 이상?         정치인?         미국인?        
  57. 57. “이 둘을 어떻게 구분하나요?” 여자?         30세 이상?         정치인?         미국인?        
  58. 58. 사용자 입력 여자?         30세 이상?         정치인?         미국인?         가수?  
  59. 59. 부분적 정보에서 배우기 여자?         30세 이상?         정치인?         미국인?         가수?  
  60. 60. 괜히 한번 물어보기 여자?         30세 이상?         정치인?         미국인?         가수?  
  61. 61. 괜히 한번 물어보기 여자?         30세 이상?         정치인?         미국인?         가수?  
  62. 62. 결과가 이랬다면 여자?         30세 이상?         정치인?         미국인?         가수?  
  63. 63. 아하! 여자?         30세 이상?         정치인?         미국인?         가수?   
  64. 64. 불확실성 해결하기 • “김정은은 정치인인가요?” • “엘사는 정치인인가요?” • “김정은이 작년에 30살이 되었어요!” • “잘생겼습니까?”
  65. 65. 모든 것을 확률로 여자? 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%
  66. 66. 이미지 리사이징 파헤치기
  67. 67. 아이디어: 한번에 한칸만 지워보자
  68. 68. 어느 칸을 줄일까?
  69. 69. 아이디어: 제일 티 안나게!
  70. 70. “티 안난다”의 정의
  71. 71. “티 안난다”의 정의
  72. 72. “티 안난다”의 정의
  73. 73. 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
  74. 74. 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
  75. 75. 천릿길도 한 걸음부터 #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 ….
  76. 76. 천릿길도 한 걸음부터 #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 ….
  77. 77. 천릿길도 두 걸음부터 • 이미지가 두 줄이라고 생각해 봅시다 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 ….
  78. 78. 천릿길도 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 ….
  79. 79. 천릿길도 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 ….
  80. 80. 천릿길도 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 ….
  81. 81. 이제 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 ….
  82. 82. 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 ….
  83. 83. 네 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 ….
  84. 84. 참 쉽죠?
  85. 85. 결론
  86. 86. 세상을 바꾸는 힘 • 좋은 식견을 갖춘 개발자의 중요 요건 • 밖에서 보면 놀라워도 • 직접 해 보면 비교적 쉽다 • 재미나게 공부해서 더 좋은 개발자가 되자!
  87. 87. 어떻게 공부하나?
  88. 88. 어떻게 공부하나?
  89. 89. 프로그래밍 대회
  90. 90. 책광고 한권만 사주십쇼 (굽신굽신)
  91. 91. 감사합니다

×