Intro. Problem Solving에 대하여

Yodi.Song·2020년 9월 10일
0

Problem Solving

목록 보기
1/19

나에게 problem solving 공부방법은 학창시절 수능수학을 공부하던 그것과 같다.
방법은 아주 간단하다

1. PS 개념을 공부한다.

  • 이를테면 BFS, DFS, DP 뭐 이러한 알고리즘 수업시간에 배웠던 개념들을 설명하는 영상을 보면서 알고리즘의 동작방법을 익힌다

  • Abdul Bari 센세의 영상을 선호한다. 아주 쉽고 단순하게 잘 가르쳐주신다.

  • 압둘 선생님은 대체로 이론만 설명하시는데 이론을 코드로 구현해보는 연습을 한다. 이 과정은 오래걸릴때도 있지만 그래도 개념을 스스로 체화하기에 가장 효과적인 방법이다.

2. 백준에서 해당 알고리즘 개념이 사용된 문제들을 두어개 푼다

  • 알고리즘당 대표 문제들이 있다. 평범한 배낭이라든가, 토마토라든가
  • 낯선 방법을 적용해서 처음 푸는 문제라서 시간이 오래걸릴수도 있다. 아니 오래걸린다.
    • 그래서 최대 2시간을 잡고서 문제를 푼다.

    • 2시간이 지나도 문제를 못풀었을때:

      • 뭔가 고지가 보이면 풀릴때까지 풀다
      • 모르겠으면 깔끔하게 포기하고 문제를 구글링하면서 문제 풀이방법을 찾아본다.
    • 이 부분이 수능수학을 공부할때와 다른 점이다.

      수학을 공부할때 나는 절대로 답지를 보지 않았다. 풀릴때까지 몇시간이고 붙잡고 있는 집념이 있었는데 그걸 PS에서도 적용했다가 큰 낭패를 봤다. 그 이유는 PS는 접근방법이 잘못되면 잘못된걸 알아차리고 다시풀기까지 갱장히 많은 시간이 걸리기 때문이다. 그 사이에 나는 시간과 에너지를 다 써버린 채 PS에 정이 떨어져서 당분간 PS를 멀리하게 된다. 뭐 그러한 이유로 시간을 정해두고 못풀면 방법을 찾아보면서 문제를 공부하고 이해한다.

3. 위의 과정으로 문제를 푸는데 성공했다면

문제풀이 사이트 상위에 있는 사람들의 코드를 참고하여 내 코드를 리팩토링한다.
솔직히 그들의 코드를 다 이해하는 건 한계가 있다. 내가 이해하는 범위에서 자료구조를 다르게 사용하거나 접근방식을 참고해서 내 코드에 적용한다.

4. 1-3의 모든 과정을 대략적으로 여기에 기록한다.

수학공부로 따지면 오답노트의 과정이다. 잘못된 방법으로 애를 먹었다면 어떻게 잘못 접근했는지, 어떻게 고쳤고 뭘 느꼈는지 대략적으로 글을 쓰면서 정리한다.


여기까지가 나의 PS 공부법이다. 이 velog는 PS의 정답을 알려주는 용도가 아니다. 오직 나를 위한 오답노트일 뿐이다. 때문에 PS의 이상적인 해결방법과 답을 찾고자 구글링을 해서 내 글을 보게 된 사람들에게 심심찮은 사과를 드린다.

하지만 만약 누군가의 삽질 기록을 보고 싶으셔서 찾아오셨다면 그것은 Welcome! 여기가 바로 삽질 맛집입니다.

0개의 댓글