이모저모

회고록] 필요한 역량. 전문가 지식을 습득하기 위해 거쳐야 하는 과정과 고민 - 알고리즘

dookie2 2025. 9. 15. 03:21

 

안녕하세요. 마지막. 포스팅을 이후로 1년 6개월가량 지난 시점에 다시 회고록을 작성하려 방문했습니다.

이전의 회고록과 마찬가지로 제 글을 읽어보시는 분들이 긍정적으로 영향을 받고, 방황하지 않고 많은 시간을 허비하지 않는 데에

도움이 될 수 있었으면 하는 바람입니다. ㅎㅎ :)

 

저는 지금 대학교를 졸업한 뒤 1년하고도 약간의 시간이 흐른 시점입니다.

취업을 목표로 공부하다 보니 아무래도 필요한 역량이 무엇인지 점검해 보는 시간이 필요했는데요.

이를 위해서는 다른 사람들의 지표나 포트폴리오를 확인해 보며 알고리즘 역량이 키워야 한다고 생각하게 되었습니다.

우리가 직면하는 문제를 식별하고 이를 프로그래밍을 통해 코드로 녹여낼 수 있는 능력은 연차를 쌓아갈수록 더욱 필요한 역량이라는

생각이 드는데요. 이를 알고리즘이라고 분류하며 여기에 많은 시간을 투자하기도 합니다.

 

메타인지 향상을 위한 노력!

우리가 알고리즘을 통해 문제를 해결한다는 것은 크게 세 가지로 분류할 수 있습니다. 

먼저, 문제를 인식하고 우리가 생각할 수 있는 컴퓨터적 사고에 맞춰 문제 내용을 바꿀 수 있는 직관과 사고력이 필요합니다.

다음으로 필요한 데이터가 무엇인지? 어떤 자료구조를 이용해 데이터를 어떻게 전처리해 둘 필요가 있는지 고민해 보아야 하고요

마지막으로 문제를 해결해 내기 위해 시간 / 공간 복잡도를 계산하며 최적화 방법을 고민해야 합니다.

 

일련의 과정을 거쳐 우리는 소스코드로 작성해 낼 수 있습니다. 그러나 알고리즘을 공부하는 우리는 이 외에도 더욱 많은 부분을

고민하게 됩니다. 특히 구글링, 알고리즘 서적을 찾아보며 꼼꼼하게 검토해 본 뒤 코드를 작성하는 것은 많은 시간과 인내가 필요한 만큼

개인적인 내적 성장이나 가치관에도 영향을 끼치게 되는데요. 무엇보다도 자신에게 필요한 정보가 무엇인지 고민해 보고

정확하게 이해하려는 노력이 필요하다는 점이죠. 이렇듯 알고리즘은 시간을 내어 공부해야 하는 필수적인 관문이라 생각이 듭니다.

 

목표를 세워보자.

이제 오랜 시간을 투자해 알고리즘을 공부해야 하는데, 제 목표는 무엇이었을까요?

사실 저는 코딩테스트를 위해 알고리즘에 시간을 할애하며 공부를 시작해서 막연한 목표가 없었습니다. 단순히 기업의 코딩테스트를 통과하

기 위해 코딩테스트에 포함되는 알고리즘의 전반적인 내용을 공부하고 응시하는 것을 목표로 세웠죠. 

이는 ‘딩 테스트를 위한 알고리즘 공부법’ 이라는 서적 제목이 나타내듯이 빠르게 취업한 뒤 역량을 더 쌓아나가는 게 옳은 방법이라는

사회적인 인식이 제 견해에 영향을 끼쳤을지 모르겠습니다.  (해당 서적을 비판하려는 것은 아닙니다..)

 

우리는 검색을 통해 코딩테스트에 대비하기 위해서 어떤 목표를 세워야 하는지 검색해 보면

실버, 골드 정도의 문제를 해결할 수 있으면 된다.

라는  게시글을 심심찮게 확인할 수 있습니다. 그러나 상당히 오랜 시간을 공부에 할애해야 한다는 점과 문제를 풀이하기 위한

사고력이나 프로그래밍 코드로 녹여낼 수 있는 구현력 등의 역량을 쌓으며 알고리즘을 공부하는 것은 단순히 문제를 푸는 것만으로는

달성하기 어렵다고 생각합니다. 그래서 공부 과정에서 개인적인 상태를 점검하고 목표를 다시 잡으며 지금까지 공부할 수 있었는데요.

  • 프로그래머스 2, 3레벨을 모두 풀어보기 - 코딩 테스트 대비하기 - 벡준 다이아 달성해보기

라는 과정으로 목표를 점점 키워왔던 것이져! 헤헤~

 

이 과정에서 코딩 테스트에 포함되는 알고리즘을 검토하고 모두가 입을 모아 칭찬하는 종만북 서적도 읽어보며 고급 알고리즘 기법과 응용

을 공부했습니다. 벡준과 프로그래머스, SWEA 플랫폼을 이용해 대략 700 문제가량 풀이해 보며 목표에 도달할 수 있었네요.

 

조급하지 않은 마음으로 꾸준하고 성실하게..

이제 목표를 세운 시점에서 이러한 성취에 도달하는 과정에서는 역경이 존재하는데요.

알고리즘을 공부하기 위해 컴퓨터 앞에 앉는 것만으로도 소름이 끼치지만 외에도 다양한 부분을 인내하며 공부해야 합니다.

모든 사람이 그렇듯 과정에서 조바심이 생기게 된다거나 이해가 어려워 중도 포기를 끊임없이 고민하게 될 텐데요? ㅎㅎ

특히 알고리즘을 공부하는 점에서는 이러한 역경들이 더욱이 크게 다가오는 것 같습니다. 이는 몇 세기에 걸쳐 학자들이 고민하고 연구한 내

용을 단시간에 흡수하는 것은 그 자체로도 어렵고 굉장한 일이지만 알고리즘을 이용해 문제를 정확하게 해결할 수 있어야 한다는 점에서 더

욱 이러한 특징이 두드러집니다. 우리가 이해하기 어려운 지식을 습득하기 위해서는 다양한 자료를 참고하며 정확한 이해가 선행되지 않고

서는 이를 구현하기란 불가능에 가까운데요. 그러나 회고록의 전반부에서 언급했듯이 알고리즘 공부는 단순히 이해력만을 요구하는 것은 아

니기에 더욱더 많은 시간을 할애하며 고민해야 하죠!

 

이전의 저는 빠른 취업을 목표로 조급한 마음에 필요한 역량을 빠르게 채우려 노력해 왔는데요. (떳떳).. ! 

만약 그 시점으로 돌아가 벡준 다이아를 목표로 알고리즘 공부를 시작한다면 저는 중도 포기를 선언했을지 모릅니다. 알고리즘을 공부하며

메타인지를 키워가는 과정에서 자신의 현재 상태를 점검하고 성장을 위해 끊임없이 고민하며 목표를 수정해 왔기에 다이아를 달성할 수 있

었던 것 같습니다. 목표를 달성한 지금까지도 알고리즘은 막연하게 공부하기 어렵고 자신의 한계도 많이 느끼는 상황이지만, 그럼에도

지금까지 꾸준하게 공부하고 있다는 점과 이전과는 직면하는 상황에 대해 개인적인 견해가 달라졌다는 점에서 의미가 있을지도 모르겠네요.

확실히 꾸준하고 성실하게 공부하는 만큼, 또 많이 고민하는 만큼 이전과는 달라져 있는 제 모습을 볼 수 있는 것 또한 알고리즘의 매력이라

고 생각합니다. 물론 알고리즘에 무조건 시간을 투자해야 한다는 이야기는 아닙니다. 여러분이 생각하기에 필요성과 타당성이 충분하다면

고민해봐도 되겠지요? ( 저도 그렇다고 알고리즘으로 밥 먹고 살겠다는 이야기는 아닙니다.. 너무 괴로어 )

 

이 글을 읽고 계시는 여러분은 어떤 상황에서 알고리즘을 다시 보게 될까요? 공부하는 상황이라면 후에 어떤 내적 성장을 이뤄낼 수 있을지

회고록이 여러분의 견해에 긍정적인 방향으로 영향을 끼칠 있었으면 좋겠습니다. 감사합니다.