Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
두 번째 startlink.live: 최백준 (baekjoon) - 알고리즘 공부하다 창업...
Next
Download to read offline and view in fullscreen.

1

Share

Download to read offline

두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!

Download to read offline

두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!

  1. 1. PS가 이렇게 해롭습니다, 여러분! 서울대학교 박성원
  2. 2. 개요
  3. 3. 이 발표는 • 일반적인 SW개발의 시각에서 본 • PS를 열심히 하면 무엇을 놓치게 되는지 • PS를 열심히 하면 무엇이 좋은지 1
  4. 4. 이 발표는 • PS를 막 시작하신 분들이 들어도 좋고 • PS를 열심히 하시는 분들이 들어도 좋고 • 취업준비 하시는 분들이 들어도 좋고 • 사실 아무나 들어도 상관없겠네요 1
  5. 5. 이 발표는 • 당연히 제 개인적인 생각 • 취사선택해서 들어주시길 바랍니다 1
  6. 6. 발표자 소개 Problem Solving • handle : ntopia • 학생 때 KOI를 했으나 별 성과는 없었음 • 2016 ACM-ICPC Daejeon Regional Contest • PLEASE OPEN TESTDATA, 3등 • 2016 ACM-ICPC Bangkok Regional Contest • ntopia never dies, 5등 2
  7. 7. 발표자 소개 Working • 애니파크 (2010.01. ~ 2013.08.) • 산업기능요원 • 옐로에그 (2013.10. ~ ) • 창업 2
  8. 8. PS란? • 자료구조, 알고리즘 이론을 배우고 • 이론을 응용해 알고리즘 문제를 풀고 • Programming Language 로 구현하여 • 맞았습니다!! 를 받는 것 [?] • 이것으로 경쟁하는 대회도 많이 있다 • Competitive Programming 3
  9. 9. 놓치는 것
  10. 10. 코드 가독성 • 거의 대부분의 SW개발은 혼자가 아닌 여럿이서 • 남이 내 코드를 쉽게 이해할 수 있어야 함 • 문서화가 필요한 부분엔 문서화도 꼼꼼히 • 하지만 4
  11. 11. 코드 가독성 • 통일되지 않은 스타일 • 인덴트 무시 • 무의미한 변수/함수 이름 • 자기 자신만 알아볼 수 있는 코드 4
  12. 12. 코드 가독성 • 대회 땐 빠르게 짜야하기 때문에 불가피한 부분 • 하지만 • 자기도 모르는 사이에 이런 스타일이 고착됨 • 대회 중이 아닌 여유로울 때 읽기 쉬운 코드를 짜보는 연습 추천! 4
  13. 13. 설계 • 알고리즘 문제를 풀 때는 • 문제에서 요구하는 풀이 하나를 위한 로직을 만듦 • 하지만 • 빅-픽쳐를 그려볼 기회가 적다 5
  14. 14. 설계 • 설계의 큰 그림을 그려볼 기회가 적음 • 남이 만든 코드를 유연하게 붙여 쓰는 일도 적음 • 스펙이 변경되는 경우를 생각하지 않음 • 유지보수를 생각하지 않음 5
  15. 15. 정제된 문제 • 보통의 알고리즘 문제에는 • 문제 설명, 입출력 형식, 제한 조건 • 명확하게 정리되어있음 • 하지만 6
  16. 16. 정제된 문제 • 현실은 시궁창 • 정제된 설명, 제한 조건이 없는 경우가 많다 • 있어도 자주 변경된다 • 문제를 해결하는 방법도 훨씬 다양하다 • 회피하기, 감추기, 스펙을 바꾸기, 등등... • 같은 문제도 팀의 상황에 따라 다르게 해결함 6
  17. 17. 얻는 것
  18. 18. 로직 구현력 • 특정한 일 한가지를 하는 로직을 구현하는 능력 • 많이 좋아짐 • PS의 세계에는 까다로운 구현 문제가 많다 • 이런 문제들을 두려워하지 말고 제끼지 말고 • 꼭 풀어보면 좋음 • ICPC에도 빡센 구현문제가 한두문제씩은 꼭 나옴 • https://www.acmicpc.net/board/view/11969 7
  19. 19. 시간,공간에 대한 감 • 실행시간에 대한 실질적인 감 • TLE를 열심히 쌓다보면 • 입력의 크기가 A고 내 코드의 시간복잡도가 대충 B면 • 이 코드는 대충 x초 안에 돌아가겠구나 • 메모리 사용량에 대한 실질적인 감 • RE, MLE를 열심히 쌓다보면 • 메모리를 이렇게 많이 잡으면 안되는구나 • 이렇게 짜면 메모리가 터지는구나 • 을 쉽게 체득할 수 있다 8
  20. 20. 경계조건 • 경계조건을 항상 염두에 두고 코딩하게 됨 • 이것을 놓쳐 생기는 버그가 꽤 많다 • Integer overflow • Array indexing error • 등등... 9
  21. 21. 문제해결 전략 • 다양한 알고리즘 문제를 풀다보면 • 이건 작은 문제로 쪼개서 해결하는게 좋겠구나 • 이건 거꾸로 생각해보는게 좋겠구나 • 등등의 느껴지는 바가 있다 • 실제 SW개발에서도 이런 전략은 유효함 • 알고리즘 문제를 풀 때 • 풀이를 이해하는 것을 넘어서 • 어떻게 이런 풀이가 나오게 되었는지 생각의 과정을 잘 살 펴보는 것이 중요 10
  22. 22. 마음가짐 • PS는 실패의 연속 • 내가 틀릴 수 있다는 사실을 자연스럽게 학습 • 정말 이렇게 어처구니 없게 틀릴 수 있구나 • 내가 이런 실수를 할 수도 있구나 • 겸손과는 약간 다른 듯? • 실패를 거울삼아 공부하고 수련하기 • 이런 경험들이 실제 SW를 개발할 때도 이어짐 11
  23. 23. 기타 • 자료구조 지식 • 아주 간간히 쓰이는 지식 • DP • Network flow • 수학 : 기하, 정수론, 확률, 선형대수, ... • 등등... • 재미 12
  24. 24. 정리
  25. 25. 정리 • PS를 열심히 하고 계신 분들, 혹은 시작하실 분 • PS가 재미있다면 계속 열심히 하면 됩니다! • 다만 오늘 발표한 내용을 머릿속 어딘가에 담아두 신다면 좋을 것 같네요! 13
  26. 26. 정리 • PS 공부하다 질리면 딴짓도 많이 하세요 • CSE 에는 재미있는 분야가 많습니다 • 여러 분야를 경험해두면 나중에 피와 살이 됩니다 • 취직 때문에 어쩔 수 없이 PS를 하는 분들 • 면접을 볼 수 있을 정도로만 준비하고 • 그 이후에 PS에 흥미가 느껴지지 않는다면 • 다른 분야에 노력을 기울이는 것이 좋습니다 13
  27. 27. 감사합니다.
  • astricmir

    Sep. 19, 2017

두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!

Views

Total views

2,655

On Slideshare

0

From embeds

0

Number of embeds

809

Actions

Downloads

7

Shares

0

Comments

0

Likes

1

×