Problem Solving
Problem Solving은 직역하자면 문제 해결입니다. 문제를 해결하는 거면 다 Problem Solving 이 아닌가 생각이 들 수 있습니다. 맞습니다. 집이 지저분하다는 문제가 있으면 그것을 해결하는 것도 Problem Solving이라고 할 수 있습니다. 다만 여기서 다루려고 하는 Problem Solving 은 Computer Science에서의 Problem Solving입니다. 그리고 Computer Science 전체에서도 아니고 알고리즘 대회, 코딩 테스트, 문제 풀이 사이트에서 볼 수 있는 문제에서 볼 수 있는 Problem Solving입니다.
종만북 p30
Programming Languages
References
In computer science and in the part of artificial intelligence that deals with algorithms ("algorithmics"), problem solving includes techniques of algorithms, heuristics and root cause analysis. In these disciplines, problem solving is part of a larger process that encompasses problem determination, de-duplication, analysis, diagnosis, repair, and other steps.
Other problem solving tools are linear and nonlinear programming, queuing systems, and simulation.
Much of computer science involves designing completely automatic systems that will later solve some specific problem systems to accept input data and, in a reasonable amount of time, calculate the correct response or a correct-enough approximation. In addition, people in computer science spend a surprisingly large amount of human time finding and fixing problems in their programs -- debugging.
```
PS를 공부하는 방법 (How to study Problem Solving?)
PS(Problem Solving)는 주어진 문제를 정해진 언어를 통해 시간 제한과 메모리 제한에서 해결하면 됩니다.
현업과 PS
취미로 하는 알고리즘 문제풀이
jwvg0425
요구사항이 굉장히 명확하게 정해져 있는 프로그램을 구현하는 것을 문제 풀이(Problem Solving, PS)라고 합니다.
현실 세계에서 마주치는 문제들과 좀 다름
입력과 출력이 명확
정해진 범위, 조건의 입력만 주어짐
잘 동작하는 지 바로 확인 가능
알고리즘 문제 푸는게 실제 개발에 도움이 되나요?
도움이 되긴 함
시간 대비 효율은 별로
개발 잘하고 싶다면 관련된 공부 하는게 더 빨리 실력이 늘 것
현업에서 해결해야 하는 문제와 크게 관련이 없음
근데 왜 열심히?
재미있어서
문제 풀이 시작하기
Online judge
책
대회
Online Judge
알고리즘 문제를 풀 수 있는 사이트
Baekjoon online judge(www.acmicpc.net) 추천
문제가 많고 사용 가능한 언어도 다양함
면접 준비 관련으로는 보통 leetcode 추천
추천하는 방법: 내가 못 푼 문제. 안 푼 문제 중 가장 푼 사람 수가 많은 문제부터 순서대로 볼 수 있음
koosaga.oj.uz 사이트에 자신의 아이디를 입력하면 자신이 푼 문제를 바탕으로 다음에 풀기 좋은 문제들을 추천받을 수 있음
책
알고리즘 문제 해결 전략(구종만 저)
대회
문제를 풀다 질리는 순간. 대회 참여 하면 동기부여
Codeforces
Google Codejam
Atcoder
Topcoder
CS Academy
Leetcode
Hackerrank
...
Topcoder와 Codeforces의 경우 레이팅에 따른 아이디 색깔 변화를 백준에 연동할 수 있음.
AtCoder: 일본 사이트. 참가하기 편한 시간대. 보통 토요일 혹은 일요일 밤 9시~11시쯤까지 대회가 진행됨
Codeforces: 다양한 시간대. 대부분 밤11시반~12시반쯤부터 시작해서 새벽 1~2시까지 진행됨. 평일에 열릴 때도 있고, 주말에 열릴 때도 있음.
각종 대회 일정 확인 https://www.acmicpc.net/calendar
AtCoder
세종류
AtCoder Beginner Contest(ABC)
AtCoder Regular Contest(ARC)
AtCoder Grand Contest(AGC)
Codeforces
대회 문제 퀄리티가 왔다갔다 + 서버가 대회 중에 터지는 사태가 자주 발생한다는 등의 이유로 평가가 안 좋음
이용자 수가 가장 많고 대회가 자주 열림
Codeforces Round (Div1 / Div2)
Educational Codeforces Round (Div2)
제출할때는 맞았는데 대회 끝나고 다시 체점할때 틀릴 수도 있음
다른 사람 코드 보고 반례를 제출 할 수 있음.
문제 풀이의 재미
독특한 발상을 떠올리는 과정 자체가 재미
어떻게 해도 O(N^2)으로 밖에 못 풀 것 같은 문제를 최적화해서 O(NlogN)으로 만들었을때의 쾌감
대회 시간 1분 남겨놓고 맞았을 때
원래 목표로 했던 레이팅에 도달했을 때(원하는 아이디 색깔을 가지게 됐을 때)
...
앞서 적은 상황들에서 전혀 재미를 느끼지 못하는 사람도 있음
성향 차이. 재미가 없다면 굳이 억지로 할 필요는 없음
문제 풀이 말고 다른 취미도 많고, 풀이를 잘 해야 진짜 개발을 잘 하는 건 아님
그래도 PS의 재미를 느껴 봤으면 좋겠다
영어 실력과 코딩 테스트 실력을 모두 길러주는 문제풀이 사이트들! (외국계 회사 코딩 테스트, 어렵지 않쥬?)
Last updated
Was this helpful?