brunch

You can make anything
by writing

C.S.Lewis

by zwoo Aug 22. 2020

자료구조를 공부하는 세번째 단계

별을 찍으면서 내 마음의 별도 찾아보자! 

Uh-oh, It's a dead end.



액션 영화의 주인공은 종종 막다른 길에 부딪힌다. 하지만 곧 돌파구를 찾아 위기를 모면하곤 한다. 하지만 나는 액션 영화의 주인공도 아니며 특별히 적들에게 둘러싸인 것도 아니었다. 그렇지만 분명 내가 서있는 곳도 막다른 길이었다. 알고리즘 말이다. 재귀알고리즘, 하노이의 탑8퀸 문제를 오가면서 공부하던 도중 한가지 의문에 휩싸였다. 좀 원초적인 질문이었다. 


왜 이걸 공부하지?


프로그래밍을 처음 시작한 이래로 쭉 재미있어서 공부했다. 그걸로 충분했다. 하지만 크기가 서로 다른 원반들을 기둥에 꽂아 하노이의 탑을 쌓는 방법(공식, 함수)을 익히는 건 재미있지 않았다. '원반 순서가 거꾸로 되지 않도록 쌓는 가장 효율적인 방법을 찾아내면 나의 재귀함수 프로그래밍 능력이 향상되어 더 깔끔한 코드를 만들 수 있고 자투리 시간을 남겨 더 나은 UI 와 UX 에 대한 고민을 할 수 있지 않을까?' 라며 나를 다독여봤지만 소용이 없었다. 책을 보며 따라 치다가도 책을 덮으면 한줄도 머리에 남지 않았다. 스스로는 코드를 한줄도 짤 수 없었다. 자괴감이 들기 시작했다. 돌파구가 필요했다. 재미를 찾아내 꾸준히 하거나, 가능한 빨리 내 지식으로 만들 방법을 찾아야 한다는 생각이 들었다.  



백준 별찍기 문제 


백준에서 사칙연산에 관한 기초 문제를 풀어본 적이 있었다. 프로그래밍에 관심을 가진 직후였으니까 작년 초정도였던 것 같다. 생각해보니 그때도 마냥 어렵게 느껴지고 내가 할 수 있을 것 같지 않아서 그 이후 단계로 나아가지 않고 알고리즘 공부를 후순위로 미뤄두었다. 당장 내가 해보고 싶은 건 웹을 만들어보는 일이니까 그것부터 해보자고 스스로 다독이면서. 알고리즘 공부에는 백준만한게 없다는 말을 많이 들어서, 이곳에서 돌파구를 찾아야겠다는 마음으로 로그인했다. 


문제풀이 의욕을 자극하는 첫번째 문제,  "Hello World" 


기억이 났다. 이 문제부터 시작했었다. 스크롤을 내리다보니 if 문의 문제 다섯 개 중 하나를 결국 성공 못하고 포기한 흔적이 남아있었다. 거기가 내가 시작할 지점이었다. 문제화면을 펼쳤고, 나는 한참을 멍하니 바라보았다. if 와 elif 를 사용해 사분면에 x 와 y 를 배치하고 출력하는 문제였다. 이제는 할 수 있을 것 같았다. 쉽게 해냈다. 자바스크립트와 문법은 약간 달랐지만 분기처리라면 웹작업을 하면서도 수도없이 했었다. 사용자가 로그인일 때, 비로그인 상태일때, 로그인은 했지만 정상적으로 쿠키값/세션값이 넘어오지 않았을 때, 서버오류일 때 등등 if 문은 내게 늘 절실하게 필요한 도구였다. 웹을 한번도 그려보기 전에는 사람들이 적어둔 답지를 보며 외우기도 하고 따라하기도 하면서 풀었지만, 나도 이제는 if 문 코드를 직접 작성할 수 있었다. 


for 문 카테고리로 넘어갔다. 문제를 훑어보던 도중 재미있는 이름의 문제를 발견했다. '별 찍기'. 반복문으로 한줄씩 별을 출력하는 문제였다. 나는 이 문제를 풀면서 알고리즘(이렇게 간단한 알고리즘도 알고리즘이라고 부를 수 있다면) 을 만드는 것에 흥미를 느꼈다. 왜냐하면, 별이 너무 예뻤기 때문이다. 


처음으로 성공한 알고리즘 문제 : 별찍기 문제

독특한 감성일 수도 있지만..ㅎㅎ 파란 터미널창에 수놓아진 별이 예뻤다. 그리고 무엇보다 어떻게 내가 이걸 생각해냈는지 신기했다. 해답을 보고 나면 절대 어려운 게 아닌데, 이전까지 나는 문제만 보면 손도 머리도 얼어붙었다. 그런데 이번에는 오롯이 내 힘으로 풀어냈다. 어떻게 옛날에는 생각이 안났는데 지금은 생각이 났는지는 모르겠다. 정말로 꾸준히 하면 내 지식이 되는 건가? 재미를 느껴서 그런 건가? 그건 잘 모르겠지만, 좀더 난이도 높은 문제에도 도전하고 싶은 욕심이 생겨버렸다. 드디어!


어떤 공부든 마냥 재미없게만 느끼기보다는 현실과 결부될 때, 또 자기만의 재미요소를 찾을 수 있을 때 더욱 의미있는 공부가 된다고 생각한다. 하기 싫은 부분이 있다면 좀 건너뛰고 하고 싶은 부분부터 해보고, 재미가 없다면 재미를 찾아내는 것도 공부의 일부분이라고 생각한다. 그래야 오래,오래 할 수 있지 않을까?





TMI.

지금 공부하는 알고리즘 책은 회사에서 빌린 책인데, 좀더 가지고 있겠다고 말씀드려도 될까..?


TMI2.

재택근무는 너무 어렵다. 등뒤에 침대가 있다니... 나는 시험기간에도, 고3때조차 방에서 공부한 적이 거의 없다. 방은 너무 편안하다. 보통은 도서관이나 집앞 카페를 가는데 이제는 코로나 때문에 내방에서 모든 걸 하려니 너무 고통스럽다 ㅠㅅㅠ



Photo by Ben White on Unsplash

이전 13화 자료구조를 공부하는 두번째 단계
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari