처음 어느 기업에서나 코딩 테스트는 넘어야 입사할 수 있다는 걸 알고 정말 당황스러웠습니다. 마치 영어도 잘 모르는데 영어로 수학 문제를 풀라는거랑 비슷한 맥락의 상황이었습니다. 저에게는 말이죠.. 처음 개발자로 가야겠다 생각하던 순간에 제가 알고 있던 언어는 하나도 없었습니다. 대학교에서 C++을 한 학기동안 배우긴 했지만 그 수업의 마지막 기말 고사에서조차 타입의 종류에 대해서만 묻고 있었고 최종 과제는 원주율 찾는 프로그램 만들기 였습니다.(엄청 간단합니다.) 이 수업은 코딩을 재미가 없는거구나라고 생각을 저에게 주었고 그 학기가 끝나면 다시 보지 말아야겠다 생각했었죠. 실제로도 생각대로 실천했고 졸업까지 했습니다. 그러다 우연히 접한 웹 클론 수업은 정말 참신했습니다. 아 이것도 이런 단계부터 코드로 작성되는구나 라고 알게되었고 개발자로써 취업을 도전하게 됩니다. 하지만 뭘해야 될지 몰랐고.. 그러던 와중에 Java를 사용하게 된 계기는 아래에서 읽어보시면 될 것 같습니다..
원래 처음 PS공부를 해야겠다 하고 배운 언어는 Python입니다. 쉬운 언어라며 많이들 추천하더라구요. 그런데 처음 배운 언어가 Python이라 어떤 부분이 쉽다고 하는건지도 잘 몰랐고 Python으로 문제 풀면 생각지도 못한 시간 초과가 나는 경우가 많아 굉장히 스트레스를 받았습니다. 그러다가 앱을 만들어보려했는데 당시에 윈도우 노트북을 사용하다보니 별다른 선택권이 없었고 안드로이드 앱을 목표로 진행했습니다. 그렇게 자연스럽게 Java를 공부했습니다. 앱은 다 만들어서 지인들에게는 소개했으나 최종 목표인 스토어 등록은 하지 못했습니다. 아무래도 만들고보니 다른 앱들과의 차별점도 모르겠고.. 허접했습니다. 등록하겠다고 로고도 만들던 생각이 납니다. 아무튼 이게 중요한건 아니고 이때 Java를 배운게 아깝기도 하고 Python이 맘에 안들기도 했고 계속 익혀두면 언젠가 쓸일이(안드로이드앱, 스프링부트 등등..) 있지 않을까 라는 생각으로 현재까지 Java로 알고리즘 공부를 하고 있습니다. 또 Java를 코딩테스트 언어에서 제외한 기업은 거의 못 본 것 같습니다. 이점이라면 이점이라고 생각하고 더불어 Java로 처음 자료구조 공부를 했다보니 고마운 마음도 있고 정도 들어 계속 사용하고 있습니다. Java를 사용할수록 특유의 매력도 느껴지고 공부할 부분도 많은 언어라고 생각합니다.
가끔 Python의 다양한 라이브러리를 보며 다시 공부해볼까 생각하지만 Python으로 어떤 시도를 해야하는 상황이 아니라면 계속 Java를 사용할 것 같습니다.
막 닥치는대로 풀었는데요.. 모르겠습니다. 언젠간 잘 풀 수 있는게 맞는지.. 코딩테스트는 양치기 싸움이라니까 많이 풀어보겠습니다. 100문제는 100문젠데 사실 똑같은 문제를 네번씩 풀기도 해서 맞았습니다 횟수론 400번도 넘습니다.. 근데 4번 풀어도 문제 읽었을 때 풀이가 안떠오르는게 있습니다. 머리가 안좋아서 일까요.ㅋㅋㅋ
음 사실 자신감이 없다.. 새로운 문제 접했을 때 멘탈도 털리고 어떤 알고리즘으로 접근할지 고민하다가 선뜻 코드가 작성되지 않는다. 제일 힘든건 이미 본 문제에 대한 풀이가 빠르게 나오지 않을 때 생기는 불안감이 정말 어마어마하다는 것이다. 정말 알고리즘 실력이 늘긴 할까.. 계속 풀어보자... keep going.. 그리고 뭔가 오기도 생긴다. 잘하고 싶다.
사실 뚜렷한 자신감이 없는 것 맞는데 사고의 폭이 넓어진 것 같다. 또한 함수를 작성할 때 인자로 이런 것을 전달해야겠다라고 생각한다던가 하는 나 자시ㄴ을 발견했다.. 칭찬해줄만 하다고 생각한다. 그리고 코딩테스트를 준비한다고 코딩테스트를 미루기보단 코딩테스트를 볼 수 있는 기회를 만들어 응시하는 것을 추천한다. 부족하다면 부족한 면을 알려줄 것이고 풀 수 있었다면 자신감을 조금은 줄 것이다.
100문제 정도 풀었을 때 한 회사의 코딩테스트를 한번 봤었다. 총 3 문제였는데 그 중 두번째 문제가 너무나 선명히 기억난다. 문제 자체를 파악을 못해 정말 당황했었고 1번을 제외하고 2번 문제에 모든 시간을 쏟았으나 테스트 케이스만 맞고 아마 틀린 것 같다. 왜냐하면 2개 풀고 붙었다는 사람이 맞았으나 나는 광탈했었기 때문이다. 그 문제 유형을 찾기 위해 노력했으나 그 문제가 뭔지도 몰라 결국 찾지 못했었고 시간이 꽤 지나서 그 문제가 Stack을 이용하는 문제라는 걸 우연히 알게 되었다. Stack을 키워드로 검색하자 비슷한 문제가 나왔다. 다시 풀어보았는데 쉬운 문제는 아니지만 당시 보다는 금방 풀었다. 이 경험이 의미하는 바는 아무래도 문제를 접해보고 접해보지 못햇고의 차이이다. 물론 굉장히 머리가 좋은 어떤 사람은 문제를 읽으면 이걸 해결할 식이 떠오른다고 한다. 어떻게 그런 생각을 했냐 물으면 그냥이라고 한다. 범인의 입장에선 정말 당황스러울 따름이다. 어쨌든 평범하다면 많이 접해보는게 답이다. 아직 갈 길이 멀지만 한 문제 한 문제 풀고 또 개발도 열심히 하다보면 기회가 있을 거라 생각한다.. 화이팅 하자. 아자아자,,