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

27
PS가 이렇게 해롭습니다, 여러분! 서울대학교 박성원

Upload: startlink

Post on 08-Apr-2017

384 views

Category:

Education


6 download

TRANSCRIPT

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

PS가이렇게해롭습니다, 여러분!

서울대학교박성원

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

개요

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

이 발표는 • 일반적인 SW개발의 시각에서 본

• PS를 열심히 하면 무엇을 놓치게 되는지

• PS를 열심히 하면 무엇이 좋은지

1

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

이 발표는 • PS를 막 시작하신 분들이들어도 좋고

• PS를 열심히 하시는 분들이 들어도 좋고

• 취업준비 하시는분들이 들어도 좋고

• 사실 아무나 들어도 상관없겠네요

1

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

이 발표는 • 당연히 제 개인적인생각

• 취사선택해서 들어주시길 바랍니다

1

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

발표자 소개 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

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

발표자 소개 Working

• 애니파크 (2010.01. ~ 2013.08.)

• 산업기능요원

• 옐로에그 (2013.10. ~ )

• 창업

2

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

PS란? • 자료구조, 알고리즘이론을 배우고

• 이론을 응용해 알고리즘 문제를 풀고

• Programming Language 로 구현하여

• 맞았습니다!! 를 받는 것 [?]

• 이것으로 경쟁하는대회도 많이 있다

• Competitive Programming

3

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

놓치는것

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

코드 가독성 • 거의 대부분의 SW개발은 혼자가아닌 여럿이서

• 남이 내 코드를 쉽게 이해할 수 있어야 함

• 문서화가 필요한부분엔 문서화도꼼꼼히

• 하지만

4

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

코드 가독성 • 통일되지 않은스타일

• 인덴트 무시

• 무의미한 변수/함수 이름

• 자기 자신만 알아볼 수 있는 코드

4

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

코드 가독성 • 대회 땐 빠르게 짜야하기 때문에 불가피한부분

• 하지만

• 자기도 모르는 사이에 이런 스타일이 고착됨

• 대회 중이 아닌 여유로울 때 읽기 쉬운 코드를 짜보는 연습 추천!

4

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

설계 • 알고리즘 문제를풀 때는

• 문제에서 요구하는풀이 하나를 위한 로직을 만듦

• 하지만

• 빅-픽쳐를 그려볼 기회가 적다

5

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

설계 • 설계의 큰 그림을그려볼 기회가 적음

• 남이 만든 코드를 유연하게 붙여 쓰는 일도 적음

• 스펙이 변경되는 경우를 생각하지않음

• 유지보수를 생각하지 않음

5

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

정제된 문제 • 보통의 알고리즘 문제에는

• 문제 설명, 입출력 형식, 제한 조건

• 명확하게 정리되어있음

• 하지만

6

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

정제된 문제 • 현실은 시궁창

• 정제된 설명, 제한 조건이 없는 경우가 많다

• 있어도 자주 변경된다

• 문제를 해결하는 방법도 훨씬 다양하다

• 회피하기, 감추기, 스펙을 바꾸기, 등등...

• 같은 문제도 팀의 상황에 따라 다르게해결함

6

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

얻는것

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

로직 구현력 • 특정한 일 한가지를하는 로직을 구현하는능력

• 많이 좋아짐

• PS의 세계에는 까다로운 구현 문제가 많다

• 이런 문제들을두려워하지말고 제끼지말고

• 꼭 풀어보면좋음

• ICPC에도 빡센구현문제가한두문제씩은꼭나옴

• https://www.acmicpc.net/board/view/11969

7

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

시간,공간에대한 감

• 실행시간에 대한 실질적인 감

• TLE를 열심히쌓다보면

• 입력의 크기가 A고 내 코드의 시간복잡도가대충 B면

• 이 코드는 대충 x초안에 돌아가겠구나

• 메모리 사용량에 대한 실질적인 감

• RE, MLE를 열심히 쌓다보면

• 메모리를이렇게 많이 잡으면안되는구나

• 이렇게 짜면메모리가 터지는구나

• 을 쉽게 체득할 수 있다

8

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

경계조건 • 경계조건을 항상 염두에 두고 코딩하게됨

• 이것을 놓쳐 생기는 버그가 꽤 많다

• Integer overflow

• Array indexing error

• 등등...

9

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

문제해결전략 • 다양한 알고리즘 문제를 풀다보면

• 이건 작은 문제로쪼개서 해결하는게좋겠구나

• 이건 거꾸로생각해보는게좋겠구나

• 등등의 느껴지는바가 있다

• 실제 SW개발에서도 이런 전략은유효함

• 알고리즘 문제를풀 때

• 풀이를 이해하는것을 넘어서

• 어떻게 이런풀이가 나오게 되었는지생각의과정을 잘 살펴보는 것이중요

10

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

마음가짐 • PS는 실패의 연속

• 내가 틀릴 수 있다는 사실을 자연스럽게 학습

• 정말 이렇게어처구니 없게 틀릴수 있구나

• 내가 이런 실수를할 수도 있구나

• 겸손과는약간 다른 듯?

• 실패를 거울삼아 공부하고 수련하기

• 이런 경험들이 실제 SW를 개발할때도 이어짐

11

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

기타 • 자료구조 지식

• 아주 간간히 쓰이는 지식

• DP

• Network flow

• 수학 : 기하, 정수론, 확률, 선형대수, ...

• 등등...

• 재미

12

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

정리

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

정리 • PS를 열심히 하고 계신분들, 혹은 시작하실 분

• PS가 재미있다면 계속 열심히 하면 됩니다!

• 다만 오늘 발표한 내용을 머릿속 어딘가에 담아두

신다면 좋을 것 같네요!

13

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

정리 • PS 공부하다 질리면 딴짓도 많이 하세요

• CSE 에는 재미있는 분야가많습니다

• 여러 분야를경험해두면나중에 피와 살이 됩니다

• 취직 때문에 어쩔 수 없이 PS를 하는 분들

• 면접을 볼 수 있을 정도로만준비하고

• 그 이후에 PS에흥미가느껴지지 않는다면

• 다른 분야에노력을 기울이는것이 좋습니다

13

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

감사합니다.