2019-11-10 작성

알고리즘 공부 방법

알고리즘 사이트 모음

알고리즘 추천 책

  • 코딩 인터뷰 완전 분석
  • 알고리즘 문제 해결 전략

알고리즘 공부법

  • 알고리즘과 관련된 이론을 공부하여 이해한다.
    • 이론과 관련된 알고리즘 문제를 푸는 방법을 이해한다.
    • 완벽하지 않아도 일부만 이해하는 것으로 충분하다.
  • 관련 알고리즘 문제를 풀어본다.
    • 한 문제는 길어야 2시간 정도만 고민해본다.
    • 2시간 정도 고민해도 모르겠으면 포기하자.
    • 정답 소스를 보거나 다른 사람의 풀이를 본다.
  • 풀면서 이해가 잘 가지 않는 부분이 있으면 질문한다.
    • 설마 이런 것을 질문해도 될까 고민되는 것도 질문해야 한다.
    • 친구들이나 관련 커뮤니티를 적극 활용하자.
  • 알고리즘을 이해해보고 문제도 다시 풀어본다.
    • 모르겠으면 포기하고 다시 풀이를 본다.
    • 그래도 모르겠으면, 다른 일을 하거나 다른 알고리즘 이론에 대해 공부하거나 다른 알고리즘 문제를 풀어본다.
  • TIP
    • 충분히 고민해보고 최대한 노력해보고 나서 포기하는 것이 중요하다.
    • 충분히 고민하고 노력하는 시간은 한 문제에 1~2시간이 적절하다.
    • 스스로 생각해서 해결하지 않고 답을 보고 해결했어도 그 문제는 해결했다고 생각하자.
    • 1개를 3일에 걸쳐서 푸는 것보다 3개를 1일 동안 푸는 것이 더 좋다.
    • 사용할 수 있는 관련된 라이브러리를 익혀서 사용하자.
    • 미적분 문제를 풀기 위해서 굳이 미적분을 스스로 생각해서 만들 필요가 없이 공식을 이용하는 것과 같은 개념이다.
  • 가장 중요한 것
    • 프로그래밍을 많이 하는 것도 중요하지만 더 중요한 것은 생각을 많이 하는 것이다.
    • 알고리즘 공부는 알고리즘을 만드는 것이 아니고, 생각의 과정을 배워서 나중에 스스로 그러한 생각을 해내는 것이기 때문이다.
    • 또한 자신의 풀이에 대한 회고 와 더 좋은 풀이 방법을 찾는 것이 매우 중요하다.

나의 알고리즘 스터디 방법

  • 모임 일정
    • 일주일 2번 혹은 그 이상
    • 스크럼 회의(10분의 회의) 진행
    • 자신의 공부 진도와 한 일 및 다음 계획에 대한 공유를 10분 안에 진행
    • 직접 만나서 서로의 풀이에 대한 피드백 후 좋은 풀이에 대한 분석 진행
  • 모임 규칙(개인)
    • 이론 정리
      • 각자가 정한 범위의 알고리즘 이론에 대한 내용을 간단히 정리한다.
      • ex) 개발 블로그 이용, 간단히 메모하는 정도 등 각자의 방식에 따라
    • 문제 풀이
      • 알고리즘 사이트 하나(위의 알고리즘 사이트 모음 참고)를 정한다.
      • 각자가 해당 범위의 알고리즘과 관련된 동일한 알고리즘 문제를 푼다.
      • 각자가 푼 문제에 대한 자신의 코드를 공유한다.
      • ex) github를 이용
    • 회고
      • 상대방의 코드에 대한 피드백을 적는다.
      • 상대방의 코드에 대한 피드백(주석)을 달아 github에 올린다.
      • 자신의 코드에 대한 피드백을 확인하고 해당 문제에 대한 좋은 예제를 찾아 분석한다.
      • 자신의 코드를 수정하여 다시 gitHub에 올린다.
  • 모임 규칙(스터디 모임)
    • 이론 정리 피드백
      • 자신이 정리한 내용을 간단하게 공유한다. 
    • 문제 풀이 피드백 
      • 왜 그렇게 피드백을 주었는지, 그 피드백을 어떻게 수정해서 반영했는지를 공유한다.
      • 좋은 코드에 대한 분석을 공유
      • 해당 문제를 푸는 좋은 방법에 대해 공유한다.
      • ‘나’의 알고리즘 스터디에서의 GitHub 협업은 Feature Branch Workflow 방법을 이용한다.

References