반응형

어제 어찌저찌 기회가 생겨서 백준 solved 루비 티어이신 알고리즘 고수분을 뵙고 여러 이야기를 듣고 왔다.

코딩 테스트에 관한 접근법 및 공부법에 대하여 설명해주셨는데 그 설명을 들은 후 새로운 시각을 깨우칠 수 있었다.

물론 이 분의 말씀만으로 내가 코테의 실력자가 될 수 있는 것은 당연히 아니고 제시해주신 방향으로 내가 얼마나 공부를 하느냐에 따라 달린 것 같다. 

 

해주신 말씀

간단히 요약해보자면

  • 특정한 문제를 보고 이 문제는 DP 알고리즘이네, 그리디 알고리즘이네 등 특정한 알고리즘 유형으로 분류하는 것은 잘못된 것이다.
    • 알고리즘은 문제를 해결(최적화)하는 방법이지 특정 문제를 특정 알고리즘으로 분류하는 것을 잘못된 것.
  • 설계와 구현을 별도로 하여라.
    • 문제를 구현하는 것은 설계가 다 끝난 후이다.
    • 디버깅을 하는 것은 오타를 찾기 위함이지 애초에 로직이 틀려먹었는데 디버깅해봐야 소용없다.
    • 설계 실력과 구현 실력을 별도로 기를 필요가 있음.
  • 문제에 대한 접근법
    • 설계 
      • 완전 탐색으로 해결할 수 있는 풀이들을 떠올려라.
      • 시간 복잡도를 계산해라.
      • 시간제한에 맞춰 위에서 찾은 방식들을 최적화해라.
        • 이때(최적화를 진행할 때) 알고리즘이 쓰이는 것이지 문제를 알고리즘으로 분류하는 것은 X
    • 구현

대충 요정도...? 

느낀 점

이 분께서 이렇게 하면 안 된다고 말씀해주신 게 정확히 내가 그동안 문제를 풀어오던 방식이다. 문제도 제대로 읽지 않고 구현하기에 급급하여... 한 번 꼬이면 다시 되돌리기가 쉽지 않고 특히나 코테 환경에서는 더더욱 심했다. 잘못된 것을 알면서도 고치지 못했는데 이번 기회에 그동안 해왔던 방식은 버리고 알려주신 방식으로 접근, 해결하도록 노력해보아야겠다.

공부법?...

공부법을 알려주셨는데... 우선 알고리즘 이론(DP, 다익스트라 등)들을 제쳐두고, (물론 아예 배제하라는 게 아니라 우선순위가 밀린다는 뜻) 완전 탐색 문제들을 많이 풀어보라고 하셨다. 문제에 대한 접근법중 설계단계에서 가장 기초인 부분이다. + 쉬운 문제들부터 해서 구현 실력을 늘려가야 한다고 해주셨다. 이 분은 과거에 하루에 실버 문제를 20개씩 푸셨다고 한다... 나는 아직 실력이 안되니까 브론즈부터 차근차근 완전 탐색 + 구현 위주로 풀어나가려고 한다.

 

알고리즘 이론 공부할만한 좋은 사이트들도 추천해주셨다.

https://justicehui.github.io/tutorial/

https://blog.naver.com/kks227

 

열심히 해보아야겠다. 좋은 분을 뵙고 도움을 받을 수 있었음에 참 감사하다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기