SlideShare a Scribd company logo
1 of 27
Download to read offline
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

What's hot

DreamCode Season2 Intro
DreamCode Season2 IntroDreamCode Season2 Intro
DreamCode Season2 IntroUi-Gyun Jeong
 
소프트웨어개발자는누구인가?
소프트웨어개발자는누구인가?소프트웨어개발자는누구인가?
소프트웨어개발자는누구인가?Minsuk Lee
 
해외에서 일하며 Ver 2
해외에서 일하며 Ver 2해외에서 일하며 Ver 2
해외에서 일하며 Ver 2Hakhyun Kim
 
내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까Hoyoung Jung
 
[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장Jong Pil Won
 
국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍Minsuk Lee
 
프로그램 기초
프로그램 기초프로그램 기초
프로그램 기초Minsuk Lee
 
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌Minsuk Lee
 

What's hot (10)

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

Viewers also liked

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

Viewers also liked (8)

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

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

현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점Wonha Ryu
 
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한..."행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...Myeongseok Baek
 
학생 개발자, 인턴십으로 성장하기
학생 개발자, 인턴십으로 성장하기학생 개발자, 인턴십으로 성장하기
학생 개발자, 인턴십으로 성장하기재원 최
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
어쩌다로봇
어쩌다로봇어쩌다로봇
어쩌다로봇민건 주
 
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법강 민우
 
데이터를 얻으려는 노오오력
데이터를 얻으려는 노오오력데이터를 얻으려는 노오오력
데이터를 얻으려는 노오오력Youngjae Kim
 
알고리즘 중요할까?
알고리즘 중요할까?알고리즘 중요할까?
알고리즘 중요할까?Wonjun Hwang
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스한 경만
 
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)Seokjae Lee
 
코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdfssuser597fbd
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)Suhyun Park
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
KeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingKeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingJaewon Choi
 
현장에서 사용하는 Software production
현장에서 사용하는 Software production현장에서 사용하는 Software production
현장에서 사용하는 Software productionJinho Yoo
 
초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인H4C
 
시스템 보안에 대해 최종본
시스템 보안에 대해   최종본시스템 보안에 대해   최종본
시스템 보안에 대해 최종본승표 홍
 
(독서광) 알고리즘 퍼즐
(독서광) 알고리즘 퍼즐(독서광) 알고리즘 퍼즐
(독서광) 알고리즘 퍼즐Jay Park
 
[Dev rookie] Omnibus Me (2014.01.11)
[Dev rookie] Omnibus Me (2014.01.11)[Dev rookie] Omnibus Me (2014.01.11)
[Dev rookie] Omnibus Me (2014.01.11)해강
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)Jaewon Choi
 

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

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

Recently uploaded

인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)snsdl0905
 
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇hjk580018
 
2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_content2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_contentalskjde0129
 
2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptx2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptxssuser3a8816
 
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복Kyubok Cho
 
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법ultrasuperrok
 
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdfSeongwon Kim
 

Recently uploaded (7)

인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
 
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇
 
2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_content2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_content
 
2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptx2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptx
 
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
 
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
 
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
 

두 번째 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