반응형

Algorithm과 Problem Solving  (feat.이코테)

동일한 기능을 구현함에 있어서
주어진 조건에 따라서 효율적인 로직이 무엇일까를 고민해 보는 과정은,

"나 자신과의 싸움의 연속이었다."

 


"이것이 취업을 위한 코딩 테스트다"라는 책을 통해 처음 알고리즘 공부에 입문하게 되었고,
해당 도서의 필자가 추천한 로드맵을 따라 한 걸음씩 정진했다.

시간이 좀 오래 걸렸지만, 책을 완독했고,
이 책에서 제시하는 주요 알고리즘 이론과 실전 문제에 어느 정도 익숙해진듯하다.

  • 그리디
  • 구현
  • DFS/BFS
  • 정렬(선택, 삽입, 퀵, 계수)
  • 이진 탐색
  • 다이나믹 프로그래밍
  • 최단 경로(다익스트라, 플로이드 워셜)
  • 그래프 이론(신장 트리, 위상 정렬)

이론에 대한 실전문제를 바로바로 풀어보려고 노력했으며,
백준(https://www.acmicpc.net/)에서 문제를 풀어보며 성장했다.

가끔씩은 문제풀이 과정을 포스팅하기도 했다.(https://mgyo.tistory.com/category/Problem%20Solving)

어떤 문제에서는 자신감을, 어떤 문제에서는 좌절을 느끼기도 하며, 
내가 투입한 시간 속에서 서서히 성장했다.

정말 풀리지 않는 문제에 오기가 생겨 그 문제에 대해서 며칠을 고민하며 지냈던 기억도 난다.
밥 먹으면서도, 샤워를 하면서도 풀리지 않는 문제를 해결하기 위한 로직을 계속 머릿속에서 시뮬레이션 했다.

자려고 누웠는데, 좋은 로직이 생각나서 벌떡 일어나 랩탑을 두들겼던 기억도 난다. 마치 위의 사진처럼 말이다.

결국 풀어냈을 때는, 정말 기분이 좋았다.

지금 와서 그때를 생각해 보면, 정말 쉬운 문제였던 것 같지만,
그때 그런 고민의 시간들이 모여 지금의 나로 성장시켰다고 확신한다.



이제 책에서 설명한 주요 알고리즘 이론들은,
내가 헛갈리거나 필요할 때, 내가 기록해둔 것들을 조금씩 찾아보면 될 것 같다.

알고리즘과 PS공부를 시작할 때 목표했던,
"이코테 책에서 소개하는 대표 알고리즘 전부 이해하기" 를 완료했다.

하지만, 알고리즘 공부가 끝난 것은 아니다.
책에서 설명한 알고리즘 외에도 무수히 많은 알고리즘이 있다.

예를 들면,
책에서 소개한 주요 알고리즘 중 하나인 다익스트라의 경우,
모든 비용(가중치)가 양수인 경우에만 사용할 수 있는데,

벨만-포드 알고리즘의 경우에는, 노드 간의 간선 비용(가중치)가 음수인 경우에도 사용할 수 있는 알고리즘이다.


이처럼 아직 내가 접해보지 못한 많은 알고리즘이 존재할 것이다.
혹은 나의 코드를 더 최적화할 수 있는 방법론 또한 존재할 것이다.

꾸준히 복습하여 각 대표 이론에 대해 정리하고,
새롭게 접하는 알고리즘, 최적화 방법론들을 기록할 것이다.
(https://mgyo.tistory.com/category/Algorithm)

 

 

 

끊임없이 성장하자.

이제 나에게 더 이상 알고리즘과 Problem Solving은 두려운 존재가 아니다.
당당하게 맞서자.

ps. 점점 알고리즘이 아니라 메서드명, 변수명, 패키지 구조를 고민하고 있는 나......기분좋은 변화랄까 ㅋㅋㅋ 😂

반응형