코딩테스트, 알고리즘테스트

코딩 문제를 어쩌다 풀면 느끼는건 내가 이렇게 바보인가라는 암울함과 풀었을때 밀려오는 앗싸 !풀었다 하는 뿌듯함이다. 후자까지 가기 어려운 문제들을 만나면 시간이 지날 수록 쌓여가는 스트레스와 집중력 저하로 그냥 포기하는게 정신 건강에 좋을때도 있는것 같다.
코딩테스트는 아주 어렵고 새로운 문제가 아니라면 일정한 알고리즘 방법들을 알고 응용하면 풀수있도록 만들어졌다. 그런데 나같이 알고리즘 공부를 맘먹고 해본적이 없거나 계속 문제를 풀어보지 않는 경우 그 쉬운 문제도 갈피를 못잡을때가 많다.
사실 코딩 하기전 생각을 하는 시간이 꽤길고, 그 생각(방법) 맞다면 몇분 안되는 코딩으로 결과를 낼 수 있어, 문제만 파악 되었다면 컴앞에 앉아 있지 않아도 된다. 편하게 누워서 머리속으로 이런저런 방법들을 생각해 볼 수 있다. 머리속에서 모든 것을 그려(시뮬레이션)볼 수 있는 고수가 아닌 내 경우는 종이에 이런저런 생각들을 써보고 정리하는게 많은 도움이 된다. 누구는 금방 생각나서 문제를 바로 푸는 사람이 있지만 여러가지 아이디어가 떠오르지만 막상 코딩 해보면 구멍이 많았다는것을 알게되는(나같은) 사람도 많을 것이다.
프로그래머로써 여러 유명한 프로그래밍 콘테스트에 입상하고 싶어 도전을 하는 경우도 있고 신입이나 이직을 생각하는 사람이라면 IT회사의 1차관문이자 역량의 척도로서 프로그래밍(코딩) 테스트를 보도록 한다. 프로그래밍 콘테스트는 경연지역이 넓어질수록 날아다니느 고수가 많고 등장하고 그만큼 문제도 어려우니 많은 준비(문제도 많이 풀고 알고리즘 책도 공부하고)가 필요한 경우이고, 입사,이직을 위한 경우라면 콘테스트까지는 아니니 문제를 어느정도 풀수 있어야 한다. 그런데 실무에서는 알고리즘을 생각하는 경우가 거의 없어 평소에 틈틈히 문제를 풀어봐서 감을 잃지 말아야한다. 그런데 게을러서 손을 많이 놓고 있는것 같다. 아니 사실은 어쩌다 문제에 꽂혀 풀고 나면 진이빠져 한동안 알고리즘을 생각하고 싶지 않게 된다. (충분한 휴식이 필요해~ㅋ) 암튼 알고리즘 문제를 들여다 보고 몇일 고생하고 풀어냈을때 만족감을 오랫만에 느낄 수 있어 좋았다.  그래도 꾸준히 문제를 풀어보지는 않을것 같다~ㅠ
한가지 불만사항은 문제의 난이도가 쉽고 어렵고를 떠나서 문제를 풀기 위해선 방법, 즉 알고리즘을 떠올려야 하고 이게 핵심인데, 모두들 코딩(coding)테스트라고 하고 한다. 사실 코딩이라는 것은 어떤 아이디어를 프로그래밍 언어의 문법(syntax)을 알아서 그 언어로 작성하는것이다. 영어를 안다고해서 미적분 문제을 풀지는 못한다. 미적분 문제를 푸는 방법이 알고리즘(algorithm)이라고 본다면 영어는 단순히 알고리즘을 표현하는 도구이고 이게 코딩이라고 생각한다. 아마 이렇게 까칠하게 나누지 않아도 알고리즘을 포함한 것을 일반적으로 문제를 푼다는 의미를 코딩에 암묵적으로 내포되어 있다고 모두들 알고 있을것 같다. 그래도 예전에 포스팅한 글에서 개발자라는 말보다 프로그래머라는 말을 쓰고 불러주길 바랬던것과 같이 코딩테스트가 알고리즘 또는 아이디어(방법을 생각해낸다는의 어떤 말???)같은 의미가 명확하게 들어가 있는 용어로 불렸으면 하는 바램이다.

comments:

댓글 쓰기