본문 바로가기
Life/Road to Character

[retrospection] 회고 (回顧) - 알고리즘 한 문제씩 50일 동안 풀면서 느낀점

by Steve-Lee 2021. 7. 30.

하루빨리 좋은 날이 왔으면 좋겠습니다

안녕하세요 Steve-Lee입니다. 오랜만에 블로그에 글을 쓰게 되었네요.

시간이 참 빠르게 흘러가는 것 같습니다. 직장 생활을 시작한 뒤로는 하루하루가 더 짧게 느껴지네요...

오늘은 알고리즘 한 문제의 힘에 대해 이야기해보려고 합니다. 알고리즘을 알고리즘이 아닌 '습관'으로 만들어가기 위한 작은 여정을 한 번 이야기해보려고 합니다.

 

  • 알고리즘 풀이를 시작한 이유
  • 성취감
  • 지속성

 

위의 세 가지 키워드를 통해 제 이야기를 들려드리겠습니다.

 

알고리즘 풀이를 시작한 이유


프로그래밍을 시작한 뒤로 줄곧 듣게 되었던 말은 '알고리즘의 중요성'이었습니다. 좋은 프로그래머가 되기 위해서 가장 기본이자 필수 조건은 탄탄한 알고리즘 지식과 문제 해결 역량이라는 말을 수백 번도 넘게 들었던 것 같습니다. 하지만 실천으로 옮기는 것은 역시 쉬운 일이 아니었습니다. 특히 시중에 나와있는 대부분의 알고리즘 서적과 전공 수업 또는 온라인 저지 사이트에서 접하는 문제들은 초심자가 알고리즘 여정을 시작하기에는 조금 높은 장벽이 있지 않나라는 생각을 하게 되었습니다. 그러던 찰나에 우연히 링크드인에서 한 글을 읽게 되었습니다.

 

Jay Lee님의 '518일동안 단 하루도 빠지지 않고 알고리즘을 풀었다'

해야지 해야지만 했던 제게 Jay Lee님의 글은 신선한 충격을 가져다주었습니다. 생각만 하는 것과 실천을 하는 것의 차이가 100일, 200일... 500일까지 갔을 때, 엄청난 스노우볼이 된다는 것을 간접적으로 경험할 수 있었습니다. 그리고 그날로 Codewars 사이트(온라인 알고리즘 저지 사이트)에 들어가 가입을 했습니다.

 

과연 나는 얼만큼 지속할 수 있을지 실험해보고 싶었습니다

 

그동안 이런 저런 이유로 알고리즘 문제를 풀다가 그만두고 또다시 풀다가 그만뒀었는데 내가 진짜 생각만 하는 사람인지 아니면 꾸준히 할 수 있는 사람인지 실험해보고 싶었던 것 같습니다. 그렇게 저도 '하루도 빠지지 않고 알고리즘 풀기'라는 여행을 시작하게 되었습니다.

 

(자세한 내용은 아래의 링크를 통해 찾아보실 수 있습니다)

 

518일동안 단 하루도 빠지지 않고 알고리즘을 풀었다.

 

kwiki.devserum.com

 

 

성취감


주제와 조금 벗어나지만 '성취감'에 대한 생각을 간단히 말씀드리겠습니다. 비전공자로 컴퓨터 공학을 처음 시작했을 때 가장 어려웠던 점은 성취감을 맛보기 어려웠다는 점이었습니다.
요즘은 문과생 출신의 개발자가 많지만 제가 처음 컴퓨터 공학 전공 수업을 들었을 때(2014년)만 하더라도 강의실에 컴퓨터 공학과 학생이 아닌 학생은 저를 포함해서 몇 명 없었던 것 같습니다. 컴퓨터가 신기해서, 새로운 기술을 배우고 싶어서 호기롭게 복수전공을 시작했지만 다시 생각해도 첫 시작이 순탄치만은 않았던 것 같습니다. 가장 큰 어려움은 너무 어렵게 느껴졌고 Input 대비 output이 만족스럽지 않아 성취감을 맛보기가 쉽지 않았던 것이었습니다.

 

그때의 기억(?)을 경험 삼아 이후에는 학습 및 실무를 대하는 데 있어서 '성취감'을 우선순위로 삼고 있습니다. 작고 사소해 보일 수 있더라도 '성취감'을 경험하면 이후에는 내가 생각했던 것보다 발전해 있는 제 자신을 발견할 수 있었던 것 같습니다.

Codewars로 하루도 빠짐없이 알고리즘 문제 풀이를 하는 시간은 이러한 측면에서 제게 매일 조금의 성취감을 맛보게 해 주었습니다. 어쩌면 알고리즘 문제 해결과 프로그래밍을 '게임(Game)'처럼 즐기면서 할 수 있겠구나라는 생각을 하게 되었습니다. 프로그래밍에서 게임의 재미를 맛보았다는 것만으로도 엄청난 성과가 아닐까 생각됩니다ㅎㅎ

 

50일동안 빠짐없이 Codewars



처음으로 랭킹에 진입했을 때 찍었던 스크린샷입니다.
상위 91%보다 뭔가 시작된 것 같다는 기분이 저를 기쁘게 만들었던 것 같습니다






이후 꾸준히 문제를 풀면서 하루도 빠짐없이 문제를 풀기 위한 습관을 만들어 나갔습니다


시간이 어느정도 지나니 100문제를 넘게 풀었고 순위도 많이 상승한 것을 확인 할 수 있었습니다




50일이 지난 현재 4만9천등으로 집계되네요. 상위 15%에 진입했습니다!
문제는 어느덧 215문제를 풀었고 하루하루 도전하는 재미에 즐거움을 느껴가고 있습니다.
그리고 뭔가 알고리즘 이론과 이론을 적용하는 문제를 풀고 싶다는 생각이 많이 드는 시점이네요!

 

지속성


마라톤 완주를 위해서는 무엇보다도 페이스를 유지하는 것이 중요합니다. 그리고 오래 달리기 위해서는 평소에 훈련이 많이 되어있어야 합니다.  제게 남은 것은 얼마나 오랫동안 이 페이스를 유지할 수 있냐인 것 같습니다.

매일 훈련하는 마라토너처럼 매일 조금씩 꾸준히 발전해 나갔을 때, 100일, 200일, ...500일이 지난 시점에는 어떤 변화가 다가오게 될지 궁금해집니다. 이를 위해 가장 중요한 것은 하루도 빠짐없이 매일 도전을 이어나가는 '지속성'이 될 것 같습니다. 예외를 두지 않고 매일 조금씩이라도 꾸준히 주어진 문제에 도전하는 습관을 이어나가는 것이 앞으로의 목표입니다. 

 


 

 

이상으로 오늘의 글을 마치도록 하겠습니다. 첫 50일은 알고리즘에 대한 습관을 정립하는 시간이 아니었나 생각합니다. 앞으로의 100일, 200일 1년, 500일도 꾸준히 문제를 해결하는 Steve가 되도록 하겠습니다.

감사합니다.

 

 

 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

 

댓글