본문 바로가기

Previous (20-22)/IT

온라인 코딩테스트 후기

서두 없이 결론부터 말하면,

공부한 양과 시험 결과는 정확히 비례한다 정도.

 

딱 그 정도네요.

 

모 회사에서 제의가 와서 코딩테스트를 치르게 되었는데, 기간을 3주 주더라고요.

이전에 쓴 글에서도 언급했듯이, 기존에 코딩테스트나 그런것을 사실 본 적은 없었습니다.

하지만 막상 공부하면서 코딩테스트가 왜 필요한지에 대한 인식을 가질 수 있었고,

그로 인해서 3주 내내 거의 하루도 쉬지 않고 시간 날때마다 계속 공부도 하고 그랬습니다만.

 

딱 3주 공부한 결과만큼 나왔네요.

 

점수는 말하지 않겠습니다만, 그냥 요약하면

100% 통과된 문제도 있고,

테스트 예제는 통과하였으나 100% 통과하지 못한 문제도 있었습니다.

 

사실 여러 가지 참고 엄청 많이했어요.

프로그래머스, 백준, 코딜리티 등등 사이트와 그리고 책까지 사서 공부했고.

그러나 현재 직장을 다니고 육아까지 하는 제 입장에서는 시간을 쪼개는 것이 쉽지 않았지만,

그 속에서 진짜 그냥 최선을 다 했다고 봐야겠죠.

 

문제가 나옵니다. 인터넷을 뒤지는 것이 답일까요?

전 그렇다고 생각하지는 않습니다. 실제로 인터넷 뒤져서 보거나 하는 것도 아예 안했고요.

 

DFS, BFS, 다익스트라, 이진검색, 다이나믹프로그래밍, 그리디 등등 이런 것은 

굳이 인터넷 안 뒤져도 혼자서 코드를 짤 정도의 수준까지는 공부해놔야 합니다.

 

왜냐고요. 

시험문제가 나옵니다.

문제에서 의도하는 것을 파악하고, 그것을 어떻게 풀어야할까. 그걸 고민해봅니다.

그런데 거기서 끝나는 것이 아니라 이 문제가 최대 복잡도가 얼마나 나올까까지도 봐야 합니다.

 

그렇다면 거기서 해결방법을 찾는 데만 해도 머리 터집니다.

인터넷 검색능력 막 발휘해서 코드 찾고 분석하고 하면 그게 시간이 더 걸립니다.

한마디로 시간낭비라는 소리입니다. 

 

요약하자면, 문제 나온다고 비슷한 문제 어디 한번 찾아볼까 하는거를 추천하지 않는 이유는

자기 스스로 푼게 아니라 남의 것을 보고 풀었다라는 순수 코딩실력이 의심스러울 수 있어서도 있지만,

그냥 그것 자체가 시간 낭비이기 때문이에요.

 

그런거 찾을 시간에 스스로에 대한 고민을 제한된 시간 내에서 해결해보려고 하는게 훨씬 낫습니다.

 

실제로 모 회사와 연동된 사이트의 경우에는 Copy & Paste라던지 베끼기라던지 그런거 다 검사까지 하는 사이트도 있답니다. 이런 점 고려해서라도 진짜 순수하게 혼자의 힘으로 스스로 푸는 것이 가장 정당한 방법이지 싶네요.

 

결국은 3주 벼락치기(?)를 했습니다만. 딱 3주 공부한 만큼의 결과가 나왔습니다.

시험 볼 때는 O(n2) (제곱) 으로만 문제가 풀리는 코드를 금방 짰지만, 테스트 일부가 통과가 안되어서,

계속 고민했어요. 어떻게 해야 O(nlogn) 또는 O(n)이 나올까.

근데 그게 안나와서 결국 최적의 답안을 제출하지는 못했고.

시험이 끝나고나서도 혼자서 계속 끙끙 싸매면서 결국 O(n)으로 된 코드 만들긴 만들었고요.

뒤늦게라도 만들었는데 그냥 지나가긴 스스로에게 아쉬울 것 같아서 담당자한테 별도 제출까지 한 상태입니다.

 

그래서 어떻게 됐나고요? 저도 모르죠.

그게 불과 며칠도 안됐으니까 당연히 모르겠죠.

 

설령 결과가 나오더라도 바로 밝히거나 그럴 생각은 없습니다.

왜냐하면 어떻게 보면 당락 여부와는 무관하게 민감할 수도 있는 문제이기 때문에.

이 부분은 양해 바랄게요.

 

사실 큰 기대는 안합니다.

하지만 어떤 결과가 나오든. 그런것을 떠나서,

스스로 코딩테스트를 위한 알고리즘 공부는 이번 테스트에만 하는 단발성이 아니라,

앞으로도 아예 하루 일정계획을 잡고 계속해서 공부해야겠고, 실제로도 그러고 있습니다.

 

그냥 주어진것만 만드는 시스템을 개발하는 사람은 어차피 정체될 수밖에 없어요.

아이디어도, 대용량 데이터 관리도, IT 트렌드가 변화함에 따라 스스로 뒤쳐지지 않으려면

알고리즘 하나하나에 대해서도 모든 것은 아니더라도 일단은 알아야 하는 시대니까요.

알면 언젠가는 다 쓸 곳이 있고, 문제 해결을 위한 방법을 더욱 잘 제시할 수 있는 능력이 생기고,

자기 자신의 몸값이 올라가고 커리어를 쌓는겁니다. 

 

그것 자체가.

 

우물안 개구리로 편하게 살겠다면 뭐 상관없습니다만,

그게 아니겠다 싶으면 좀 더 넓게 보고 계속 접하고 공부하고 그러는 수밖에 없습니다.

그것이 IT인의 숙명입니다.

 

참고로 이전 글에서 구매했다는 서적.

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&barcode=9791189909178

 

파이썬 알고리즘 인터뷰 - 교보문고

세계 최고 온라인 문제 풀이 사이트인 리트코드(LeetCode)의 기출문제 풀이와 분석! 200여 개가 넘는 일러스트를 통해 알고리즘과 자료구조 이론을 한눈에 쉽게 익힐 수 있음은 물론, 파이썬으로 구

www.kyobobook.co.kr

 

사실 크게 도움은 안 됐습니다.

그런데 또 구매한 것을 후회하지도 않습니다.

 

한 권 정도는 사놓고 쭉 보고 그러면 어느 정도 프로세스나 체계를 잡는 데 도움은 되기 때문이랄까요.

90%가 도움이 안 되는 내용이고 10%라도 도움이 된다면 그것으로도 책을 구매한 소기의 목적은 달성한 셈입니다.