잡다한 시도/코테 준비는 하는거니?

거의 3년만에 코테 문제를 다시 풀면서 느낀점

GGOBOOGI 2022. 5. 30. 22:51
반응형

인턴을 하면서 갑자기 코테 문제를 풀고 싶어졌다.
코테를 합격을 위해 푸는 것이 아니라 그냥 진짜 코테 문제가 풀고 싶었음.
그래서 이번주 화요일인가 수요일부터 코테 문제를 좀 풀기 시작했다. 글을 쓰는 오늘은 토요일이다. (2022년 5월 14일)

그래서 어떤데?를 말하기 전에 나의 상황부터 간략히(아니 장황하게) 정리를 하고 가보자.

나의 블로그 글을 보면 알 수 있듯이, 나는 소프트웨어학부를 졸업했고 수많은 앞길 중에서 금융권 공기업을 가기 위해 걸어가고 있는 사람이다.
보통 소웨 관련 과를 졸업한 사람의 진로는 크게 공기업과 사기업으로 나뉘는데, 사실 공기업 파는 별로 없는 것 같다. 아무래도 IT가 메인인 곳을 찾으려면 사기업이 대부분이고, 요새 사기업 IT 연봉 인플레 때문에 IT가 메인이 아닌 공기업은 그 연봉을 따라가지 못함 ㅋㅋ

요즘은 좀 공기업 채용 프로세스에 코테가 슬슬 도입되며 채용 프로세스의 사기업화가 진행중이긴 하지만, 아직 그래도 공기업은 공기업이고 사기업은 사기업이기 때문에 채용 프로세스가 다르고 그에 따라 준비해야 하는 것들이 좀 다르다.

 

코테 준비를 멀리하게 된 이유, 변명이라면 변명

나는 대학교 2~3학년때 교내 ACM-ICPC 준비 동아리, 다시말해 알고리즘 및 코테 준비 동아리에서 활동했다. 동아리에 들어갔던 이유는 빡센 동아리로 유명했고 빡센만큼 선배들의 아웃풋이 대단했다. 그래서 그 동아리 들어가서 하라는것만 잘 하면 취업 잘 할 줄 알았지.
결과적으로는 나는 동아리에서 하라는거 안하고 벌금으로 떼워서^^ 떠먹여줘도 안해 안먹어 퉤퉤 뱉어낸 수준.

2학년 1학기 초반에 c언어 printf문 배우던 그때 동아리에 들어가기 위한 손코딩 시험을 보면서 처음으로 코테 문제를 풀었다. 그때는 면접관이었던 선배들 앞에서 땀 삐질삐질 흘리면서 풀었는데 생각해보면 프로그래머스 1은 되나 싶은 난이도였던듯 ㅋㅋ

나는 코테가 뭐랄까 수수께끼를 푸는 것 같아서 재밌었다. 손으로 풀려면 한참 걸리는 문제를 컴퓨터한테 시켜서 대신 풀게 하는 희열이랄까.. 코테를 접한 초기에는 그래서 코테를 좋아했고, 재밌어했고, 나름 우물 안 개구리들 중에서 못한 편은 아니었다고 생각한다.

근데 어느순간부터 코테가 약간 수능과 다름이 없다고 느껴져서 흥미를 점점 잃었다. 아무래도 코테 대회에서 입상하기 위해서는 다년간의 경험과 노하우가 축적된 코테 유형들을 익히고, 그들의 구현 방법을 암기하여 빠른 시간 내에 코드를 완성하는것이 중요했다.

약간 자료구조를 어떻게 구현하느냐를 외우는것과 다른 느낌이다. 당연히 자료구조 구현 방법은 외워야 한다고 생각한다. 그거 안외우면 구현 어떻게함ㅋㅋ 내가 말한건 그런게 아니라 '아 이런 유형의 문제는 이런 풀이로 풀어야만 시간복잡도 O(nlogn)에 풀 수 있어! 그리고 좀 더 복잡하긴 하지만 이 풀이로 풀면 O(n+k)에 풀 수 있어서 더 효율적이란다!' 이런 것.. 수학 문제집 유형 132번 이런 느낌.
그러나 내가 매력을 느꼈던 코테는 이런 것들이 아니었다.

그리고 어느정도 코드의 가독성을 생각하며 코딩을 하기 시작한 시점부터 코테가 점점 더 싫어졌다. 어느순간부터 나는 내 코드를 누가 봐도 바로바로 이해할 수 있었으면 좋겠다는 생각을 했다. n, j, r, t 이런 문제를 푼 당시의 나만 아는 변수명을 쓰면서 호로록 풀어버리는건 내가 싫었다.

나는 여태까지 코테를 대부분 C++로 준비했는데, 문제를 풀며 구조체나 클래스 등을 작성하여 한번에 봐도 이해가 가능한 코드를 만들려고 노력했다. 물론 그렇다고 해서 모든 문제를 클래스! 메소드! 변수명 지켜! 이러면서 푼건 아니다. 그러려고 최대한 노력을 했다는 것 뿐..

근데 이러한 방식의 단점은 코드를 와다닥 쓸 수 없고 코드의 구조를 생각하며 작성해야 하기에 문제를 푸는 시간이 오래 걸리고, 코드의 길이가 다른 사람들의 코드보다 훨씬 길어진다.

그래서 그게 뭐? 가독성 좋으면 더 좋은거 아냐? 라고 하기에는 코테판에는 묘한 기류가 있었다. 바로 짧고 짧은 코드일수록 '와 이런 방법도 있었군요 한 수 배워갑니다' 라는 코멘트가 더 많이 달리는 것. 물론 짧으면 짧을수록 코드 작성 시간이 줄어들어 주어진 시간 내에 최대한 많은 문제를 풀어내야 하는 코테에서는 유리하다.
하지만 난 그렇게 짧은 풀이를 하기 위한 1문장이 엄청나게 긴 코드를 작성하고 싶지 않았다.

그리고 백준 채점 시스템에는 나 뿐만 아니라 다른 사람이 제출한 코드의 길이를 볼 수 있도록 되어있다. 이게 사람 마음이 '아 나는 그냥 다른사람 신경 안쓰고 내가 쓰고싶은대로 써야지' 라고 마음을 먹어도 남들 다 짧은데 나만 코드 긴게 눈으로 보이면 '아 아무리 그래도 내가 잘못했나? 저렇게 풀어야 하는거 아닐까 다들 다 저렇게 푸는데..'라는 마음이 들기 쉽다.

물론 이런 나를 보고 '님이 걍 코드 쓸 줄 몰라서 쓸데없이 길게 적은거임 ㅋㅋ', '남들이 뭔상관임 나약하시네 ㅋㅋ' 라고 한다면.. 예예 그렇다고 칩시다. 저보다 코드 잘 적으시고 강인하셔서 좋으시겠어요. 서로 갈 길 갑시다?

아무튼 이렇게 내가 매력을 느꼈던 코테 문제들은 점점 사라지고 짧은 시간 내에 많은 문제를 맞춰야 하는 코테판에 나를 맞춰야하기 시작하면서 코테 준비에 흥미를 잃었다.

 

굳이 코테를 준비해야할까?

저학년때는 꼭 멋진 개발자가 되어야지 라는 마음으로 학교에서 마련해주는 네이버 분당 본사 견학, 구글 코리아 견학을 다녔다.

그리고 친구랑 함께 삼성스드스 보안 컨퍼런스, 코엑스에서 열렸던 AWS Summit, 블록체인 컨퍼런스(아니 이때 컨퍼런스를 갔으면 비트코인을 샀어야지) 등 여러 컨퍼런스도 (아무말도 알아듣지 못했지만 내돈내산으로) 가보며 아무것도 모르지만 내 전공에 진심을 다했었다. 아 물론 컨퍼런스 가봤다는게 유명 연사들 강연 듣는 그 겁나 비싼 티켓 샀다는게 아님. 딱 입장해서 부스 둘러보고 기본 강연 들을 수 있는 베이직 티켓..

아무튼 대학교 재학하면서 프로젝트도 블록체인, 웹 프론트-백엔드, 머신러닝 등 다양한 분야로 하고싶은 것들은 웬만하면 다 건드렸다.

쓰고보니 뭐가 되게 많네. 근데 현재 자소서에는 녹이지 못하는 그런 나의 소중한 추억으로 남아있는 경험들.... 아무튼 그래서 그런가 내가 공기업 준비한다고 하면 '대학원 안가?? 공기업 준비해?? 왜???' 라는 질문을 꽤나 높은 확률로 들었다. 나에게 이런 말을 했던 친구들은 이제 곧 석사 졸업하거나 회사원 2년차가 되겠군. 부럽당 나는 체험형 인턴따린데!

나름대로 열정적으로 살아오면서 이대로만 가면 멋진 개발자가 될 수 있겠다고 3학년때까지 생각했었는데, 진짜 아직도 그 터닝 포인트를 모르겠지만 한번 진중하게 내 앞날에 대해서 생각을 해 본 뒤로 굳이 개발자가 되어야할까? 라는 생각을 가지게 되었다. (근데 그러고 4학년때 갑자기 자율주행쪽 궁금해서 급발진으로 학부연구생 해본게 참 아무리 생각해도 즉흥적이군)

그리고 이러저러한 생각으로 (갑자기 줄임) 굳이 개발자로 삶을 사는 것이 내 행복지수 상승에 도움이 되지 않는다는 결론을 내렸고, 나의 행복지수 상승에 도움이 될 것이라 생각되는 지금의 길로 나아가기 시작했다.

그러면서 전공 공부가 훨씬 중요해졌고, 굳이 개발자가 되어야 할까 라는 물음은 굳이 코테를 준비하지 않아도 된다는 엔딩을 가져다주었다.

그래서 지금은 갑자기 왜?

그러게... 갑자기 무슨 바람이 들었을까. 사실 위에까지는 5월 14일에 썼고 지금은 5월 30일이다. 시간 진짜 빨리가네.

 

글을 임시저장해둔 2주 사이에 사실 코테를 거의 풀지 않았다. 아니 풀지 못했다. 면접 준비하고 전공 공부하고 그러느라.. 어쩌면 그나마 잠시 한가하던 때에 생산적이고 재미있는 활동으로 코테를 잠깐 풀었던 것 같다.

 

그래도 이번에 코테를 다시 풀면서 느낀 점이 있다. 한창 C/C++로만 풀다가 오랜만에 라이브러리랑 메소드 불러오려니까 생각이 안났다. 사실 적잖은 충격이었다. 그렇게 2년 내내 아무리 내가 벌금을 내며 살았다지만 나름 열심히 했었는데, C++로 string split 어떻게 하더라 이러고 앉으니 자괴감이 엄청났다. stringstream 어쩌고로 했었던 것 같은데.. 라는 기억만 나고 그 메소드를 어떻게 사용하는지가 하나도 기억이 안나니 미칠 노릇이었다. 

 

그래서 그냥 이렇게 아싸리 제로베이스로 돌아간 김에 자바나 다시 해볼까라는 생각이 들어 5일동안 자바로 코테 몇문제 풀고 어떤 기업 코테를 자바로 풀었다. (물론 망)

 

짧은 기간 동안 자바로 정말 제로베이스에서 시작을 하면서 정말 재밌었다. 일단 첫번째로 문제를 빨리 잘 풀어야 한다는 무의식적 굴레가 없었다. 그냥 진짜 인턴 시간 중 생산적인데 재밌는거 해보고 싶어서 한거거든. 코테를 잘 풀려고 한게 아니라.

 

두번째로 라이브러리와 메소드를 공부하는것이 재밌었다. 이 문제를 어떻게 풀지?가 아니라 이 라이브러리랑 저 라이브러리는 뭐가 다르지? 여기에는 왜 이 구조체를 리턴하는 함수를 넣어야하지? 등등 원론적인 부분에 집중하다보니 코테를 푼다가 아니라 코테를 공부한다는 느낌이 들어서 좋았다.

 

요새 흔하디 흔한 스프링 프로젝트 등 자바랑 관련된 프로젝트는 1도 없는 사람(학교 수업만 들었음)이라, 그야말로 자바알못이었는데 이번 기회에 대충 priority queue나 그런애들 써야하는 정도의 라이브러리 콜은 가능해진 것 같아서 재밌었다.

 

요즘 채용공고 보니까 공기업도 슬슬 코테 도입을 당연시하려는 분위기다. 당연히 IT 사기업만한 코테는 아니고 기본적인 코테겠지만, 이번에 한번 공기업 코테를 보고 나니 아무리 그래도 한달에 조금씩은 풀어놔야 시험때 웬만큼 풀 수 있을 것 같다는 생각이 들었다. 딱 기본적인것만 나오긴 하던데 아무튼..

 

사실 이 글을 처음 작성하던 시점에는 진짜 진지하게 작성했던 것 같은데 2주가 지난 지금 보니 약간 코테보고 도라방스여서 와다다 적은 감이 없지 않아 있는 것 같다. 글을 발행해야 하나 말아야 하나 고민하긴 했지만, 거짓을 적어낸 글은 아니므로 내 인생의 한 자락에서 이런 생각도 했었지 라는 의미에서 글을 발행하려고 한다.

 

아무튼 전국의 취준생 화이팅. 끝.

반응형