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

More Related Content

PDF
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
PDF
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
PDF
Technicalinterview
PDF
ApprenticeshipPatterns/Chapter5
PPTX
Django Girls 12월 Meetup 발표 자료
PDF
(책 소개) 쏙쏙 들어오는 인공지능 알고리즘
PDF
Tdd retro agile_korea_게시용
PDF
튜토리얼과 하우투 문서의 차이점은?
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
Technicalinterview
ApprenticeshipPatterns/Chapter5
Django Girls 12월 Meetup 발표 자료
(책 소개) 쏙쏙 들어오는 인공지능 알고리즘
Tdd retro agile_korea_게시용
튜토리얼과 하우투 문서의 차이점은?

What's hot (10)

PPTX
How to study
PPTX
DreamCode Season2 Intro
PPTX
소프트웨어개발자는누구인가?
PDF
해외에서 일하며 Ver 2
PDF
DebugIt/chapter5~8
PPTX
내 질문에는 왜 답변이 달리지 않을까
PPTX
[2012 01 28]cleancode 1장
PPTX
국민대학교 컴퓨터프로그래밍
PDF
프로그램 기초
PPTX
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
How to study
DreamCode Season2 Intro
소프트웨어개발자는누구인가?
해외에서 일하며 Ver 2
DebugIt/chapter5~8
내 질문에는 왜 답변이 달리지 않을까
[2012 01 28]cleancode 1장
국민대학교 컴퓨터프로그래밍
프로그램 기초
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
Ad

Viewers also liked (8)

PDF
두 번째 startlink.live: 최백준 (baekjoon) - 알고리즘 공부하다 창업...
PDF
두 번째 startlink.live: 장홍준 (hongjun7) - Teamwork in Programming Contests
PDF
스타트링크 (Startlink) 소개 2015
PDF
[Tech meet up] 알고리즘? 모르고리즘! - 연세대 모르고리즘 동아리 이도현
PDF
Google Code Jam 2017 소개
PDF
2016 FunctionCup 풀이
PDF
프로그래밍 대회: C++11 이야기
PDF
웨일 보안 이야기
두 번째 startlink.live: 최백준 (baekjoon) - 알고리즘 공부하다 창업...
두 번째 startlink.live: 장홍준 (hongjun7) - Teamwork in Programming Contests
스타트링크 (Startlink) 소개 2015
[Tech meet up] 알고리즘? 모르고리즘! - 연세대 모르고리즘 동아리 이도현
Google Code Jam 2017 소개
2016 FunctionCup 풀이
프로그래밍 대회: C++11 이야기
웨일 보안 이야기
Ad

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

PDF
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
PDF
이 프로젝트 시무12조 (Kitworks Team Study 박현준 발표자료)
PDF
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
PPTX
학생 개발자, 인턴십으로 성장하기
PDF
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
PDF
어쩌다로봇
PDF
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
PPTX
데이터를 얻으려는 노오오력
PPTX
알고리즘 중요할까?
PDF
애자일 프랙티스
PDF
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
PDF
코딩테트2205-kucc-220508145530-8015b5d7.pdf
PDF
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
PDF
NDC2019 - 게임플레이 프로그래머의 역할
PPTX
KeyValuePair 첫 모임 - XP와 Pair programming
PPTX
현장에서 사용하는 Software production
PPTX
초보자를 위한 시스템 해킹 공부 가이드라인
 
PPTX
시스템 보안에 대해 최종본
PDF
(독서광) 알고리즘 퍼즐
PDF
[Dev rookie] Omnibus Me (2014.01.11)
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
이 프로젝트 시무12조 (Kitworks Team Study 박현준 발표자료)
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
학생 개발자, 인턴십으로 성장하기
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
어쩌다로봇
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
데이터를 얻으려는 노오오력
알고리즘 중요할까?
애자일 프랙티스
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
NDC2019 - 게임플레이 프로그래머의 역할
KeyValuePair 첫 모임 - XP와 Pair programming
현장에서 사용하는 Software production
초보자를 위한 시스템 해킹 공부 가이드라인
 
시스템 보안에 대해 최종본
(독서광) 알고리즘 퍼즐
[Dev rookie] Omnibus Me (2014.01.11)

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

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