시작하며

알고리즘

계기

최근 코딩테스트 준비를 하며, 비슷한 유형을 아무리 많이 풀어봐도, 그 틀을 조금만 벗어나면 전혀 다른문제처럼 느껴지고, 내 스스로 실력에 회의감이 들기 시작헀다. 그래서 평소처럼 시간을 많이 써가면서, 풀지 못하는 문제를 고민하는 방식을 줄이고, 처음 공부하는다는 느낌으로 공부하려고 노력중이다.

기존에 월, 수, 금 프로그래머스로 문제를 시간을 재면서 풀던거는 유지하되, 따로 neetcode 250제를 활용하여 코딩테스트에 입문한다는 마인드로 다시 처음부터 풀고 있다. 문제를 풀고 땡이 아니고, neetcode에서는 출제 의도가 있다. 문제를 다 풀고, 출제의도가 뭐였는지 Solution을 보며 확인하고, 이런 방식이 있었다는 것을 학습할 것이다.

chatGPT도 적극적으로 활용하며 학습할 것이고, 문제 정답을 보다보면 분명 알고리즘은 알고 있는 알고리즘이지만, 접근 조차 못했을거같은 풀이과정들이 있다. 그 접근과정을 체득하기 위해 여러가지 방법으로 문제를 풀려고 노력할 것이다. neetcode는 처음에 시간복잡도를 고려하지않고, 가장 먼저 떠오른 방식으로 깡구현으로 먼저 통과하는 것을 목표로 하고, 그 이후 Follow up 을 읽으면 추가 제한 조건들이 있다. 공간복잡도 O(1)로 풀거나, 시간복잡도 O(N)으로 풀라는 제한조건인데, 이를 만족할수 있게 다시 풀려고한다.

노트 정리

이 노트에는 내가 잘 몰랐거나 생소했던 문제들을 위주로 올리려고 할 것이고, 왜 막혔고 어떤부분을 다음에 비슷한 문제를 풀 때 떠올리고 있어야할 지를 작성해볼 생각이다. 알고리즘을 기준으로 분류하고, 누적하면서 작성할 것이다.

하루에 5문제가 목표긴하지만, 같은 문제를 다른 방식으로도 풀어 봐야할 문제들도 적지 않아서, 재량것 열심히 처음부터 다시 해볼까 한다. 마인드 자체는 코딩테스트 통과가 목표지만, 내심 알고리즘 자체에 좀 자신있고, 고수가 되고 싶은 마음 또한 큰 것 같다 …