[2년 전 어느 날] 7. 인터넷으로 보는 Python 알고리즘 시험

in #kr-pen6 years ago

1. 허파에 바람든 날
2. 김칫국 들이키던 나날들
3. 헤드헌터에게 그리 적합치 않았던 상품
4. 이상적이진 않지만 이거라도 한 번
5. 첫번째 전화 인터뷰는 지나가고
6. 다시 처음부터 맨 땅에 헤딩 에서 이어집니다.

전편 줄거리
어느날 우연히 헤드헌터에게서 연락을 받아 뉴욕 금융계라는 신세계에 눈을 뜨고 행복한 상상에 즐거워하지만, 시간이 지난 채 아무 소식이 없자 불안감이 커진다. 그래서 그 헤드헌터에게 연락을 취했더니, 기대치 않았던 채용 공고를 하나 받게 되었고, 전화 인터뷰까지 하게 되었으나 진전이 없었다. 이후 내가 할 수 있는 다른 일을 찾게된다.


나는 순발력이 부족한 편이다. 그래서 예를 들어 어떤 부당한 대우를 받았을 때, 그 자리에서는 아무 것도 못하고 물러나고는 뒤돌아서 '이렇게 이렇게 할 걸' 하고 후회하곤 한다. 그래서 나에게는 일어날 법한 여러가지 상황들을 먼저 머리 속에 정리해두는 게 중요하다. 그나마 내가 미리 상정한 상황에 처하면 그래도 어느 정도 준비된 대처를 할 수 있기 때문이다.

이런 나의 한계를 알면서, 그 날은 왜 그리 서둘렀을까. 아니 정확히 말하자면, 그 순간 나는 내 자신의 한계를 가늠하지 못하는 한심한 상태였다고 하는 게 맞을 것 같다.

이메일을 찾아보니, 내가 지원한 바로 다음 날 A Capital에서 이메일이 왔었다.

Thank you for your interest in A Capital and for your application to one of our Quantitative Developer roles! The first step in the recruitment process is to complete a coding challenge through one of our testing partners, HackerRank. The challenge must be completed in Python. Please note that the test will remain open until the date and time listed below, however once you begin the test, you will have 120 minutes to complete it and directions will be available once you access the link.
A Capital에 지원해주셔서 감사합니다. 채용 과정 1단계는 우리의 파트너인 HackerRank 사이트를 이용하여 프로그래밍 시험을 보는 것입니다. 시험은 Python으로 해야 합니다. 이 시험은 아래 적힌 유효기간 전에 아무 때나 볼 수 있으며, 다만 한 번 시험을 시작하면 2시간 내로 끝마쳐야 합니다.
PLEASE NOTE: The content of this test is confidential and not to be shared externally.
시험 내용은 비밀이며 외부에 공개해서는 안됩니다.

유효기간은 2주였다.
이 편지를 받고 가슴이 두근거렸다. 무언가 잘 될 것 같은 느낌이었다. 그래도 바로 시작할 수는 없으니 일단 위에 소개된 HackerRank.com 이란 사이트에 들어가서 어떻게 생겼나 구경했다.

이 사이트는 문제를 풀면서 프로그래밍 공부를 하기 좋게 만들어져 있었다. Python 뿐 아니라 10여가지에 이르는 다양한 언어를 지원하고 있으며, 아주 쉬운 문제부터 차근차근 풀어나가 본인의 점수를 쌓고, 높은 점수를 쌓은 실력자는 어딘가에서 스카우트 제의도 받고 하는 모양이었다. 처음 초보들의 문제는, 먼저 문제에 대한 설명이 주어지고 아래에는 프로그램의 기본 뼈대가 주어지며, 각자가 Function에 해당하는 코드를 채워넣은 후, 프로그램이 원하는 답을 생성하면 채점이 되는 식이었다. 대략 1시간 정도 초보적인 문제들을 풀며 워밍업을 했던 것 같다.

오전 10시 반에 이멜을 받고, 대략 1시간 정도 둘러보고, 점심 먹고, 오후 1시 반 정도에는 벌써 할 마음이 가득했다. 그래서 바로 2시간 짜리 시험을 시작했다.

이메일에 첨부된 초대 링크를 클릭하니 120분 타이머가 돌기 시작하면서 5문제가 주어졌다. 첫 1, 2번은 쉬웠다. 대략 20분 정도에 두 문제는 마칠 수 있었다. 그리고 3번 문제에 도달했다.

"6x6 격자로 구성된 얼음 호수입니다. 무작위의 위치에 바위가 주어집니다. 여러분의 시작점도 무작위이며, 출구는 오직 한 군데입니다. 한 번 출발하면 얼음에서는 계속 미끌어지고 바위에 도착해서야 방향을 바꿀 수 있습니다. 주어진 상황에서 당신이 출구를 나갈 수 있는지 없는지 알려주는 프로그램을 만드세요."

음..
애매하다.
어떻게 해야할 지 알듯 말듯 하면서, 어떻게 잘 하면 될 것 같기도 한 그런 문제였다.
'일단 시작점에서 갈 수 있는 건 4방향이고, 각각의 방향의 어디 중간에 바위가 있는지 확인하고, 그 바위에서 갈 수 있는건 이제 3방향인가...'
이런 식으로 문제를 해결하기 위해 머리를 굴리기 시작했다. 완벽하진 않아도 어느 정도 아이디어가 섰는데, 다음 문제는 이 사이트의 Python 세팅에서 여러 유용한 모듈들은 쓸 수가 없도록 (import 가 안되도록) 막혀있다는 것이었다. 격자 문제이니 Matrix로 생각해서 Numpy 모듈을 들여오면 여러가지 부가 함수를 이용해서 더 간단한 코딩이 될 것 같았는데, Numpy를 못 쓰게 되니 너무 당황스러웠다. 나에게 Numpy 없는 Python은 자동차 없이 걸어가라는 말과 같았다.
그렇게 고군분투하며 1시간이 지났다.
전체 시간이 1시간이 아니라 이 문제에만 1시간이 지났다.
남은 시간이 30여분 밖에 안남았는데, 이 문제에 대해 내가 짠 코드는 올바른 답을 주지 않는다며 자꾸 "Fail" 표시만 떴다.

이제 나는 선택해야 한다. 아마 시험을 보는 누구라도 한 번 씩 겪는 순간일 것이다.
'남은 시간 이 문제에 집중해서 이거라도 풀 것인가, 아니면 다음으로 넘어갈 것인가!'

남은 시간이 30분도 안남았을 때, 난 다음 문제를 보기로 한다. 다행히 3번을 못 풀어도 다음 문제를 볼 수는 있더라. 4번 문제를 읽어봤는데, 이건 더 큰 난관이었다. 문제 자체가 이해가 안되었다! 이해가 안되어 지금 기억도 나지 않는다. 이 문제 해석하느라 10분 정도를 보낸 후 이제 마지막 5번 문제를 읽어보았다.

"예를 들어 1221년 05월 31일과 이 숫자들을 거꾸로 쓴 1350년 12월 21일은 xxx Pair 입니다. (정확한 용어는 당연히 잊었음) 2000년에서 7000년 사이에는 이런 페어가 몇 쌍이나 있을까요?"

이 문제는 차라리 직관적이었다. 앞에서 고생한 3번 문제보다도 쉬워보였다. 월은 1부터 12까지만 있고, 일은 기껏해야 31일 까지만 있으니 이런 제한을 이용하면 찾는 건 금방일 것 같았다. 이렇게 생각을 정리하고 코드 몇 줄 쳐 넣다 보니 2시간이 다 되어 버렸다...

망했다.
내 결과는 2/5. 그것도 난이도 하의 2문제만 푼 걸로 보내질 것이다. 나는 2시간 전 뭘 믿고 그리 자신만만하게 시험에 응했던 것일까...


시험 본 다음날 그 회사에서 답장이 왔다.

Thank you so much for your interest and for taking the time to complete our testing round. Unfortunately, we have decided not to proceed with your candidacy for the Quantitative Developer- Data Analysis Team role at A Capital. The results of your testing did not meet our minimum requirements to move forward in our process. We have decided to move ahead with other candidates who we feel are a better match for this particular position.
Thank you again for your interest and your time, and we wish you only the best of luck in your job search!
우리 회사에 관심갖고 시험에 응해줘서 감사합니다. 불행히도 우리는 당신을 고용하는 절차를 더이상 진행하지 않기로 했습니다. 당신의 시험 결과는 우리의 최소한의 기준에 미치지 못했습니다. 그래서 우리는 다른 응시자에게 기회를 주려고 합니다. 다시한 번 당신의 관심과 시간에 감사드리며, 당신의 직장 구하기에 행운이 깃들길 바랍니다!

당연한 결과다.
이게 나의 한계다.


시험이 끝나고, 허망한 마음을 진정시킨 후, 그래도 지난 시간을 복기하면서 위의 3번 같은 문제는 어떻게 풀어야 할 지 검색을 조금 해봤다. 그리고는 알게된 충격적인 사실: 이 회사의 시험 기출문제가 인터넷에서 검색되었던 것이다. 처음에 안내 이메일에는 공유하지 말라고 경고가 적혀있었지만, 그럼에도 공유하는 사람은 꼭 있기 마련인가 보다.

알고리즘 시험이라는 것은 예를 들면 수수께끼와 같다. 처음 문제를 들으면 어떻게 해야 할 지 감이 안잡히고 어렵다. 그런데 답을 알고나면 그 문제는 엄청 쉬운 문제가 되어버린다. 내가 만약 2주의 시간동안 위의 HackerRank 사이트에서 최대한 많은 문제들을 풀어보고, 또한 이 회사의 기출 문제를 검색해서 보고 시험에 응했으면 어쩌면 이 시험은 통과했을 지도 모른다. 부적절한 방법일 지는 몰라도 안내 이메일에 기출문제 찾아보지 말라고는 안했으니까. 그렇게라도 해서 다음 단계로 가봐야 했던 것이었을까.

내가 경험이 없고, 순발력이 떨어져서 이번 시험을 제대로 대응하지 못했지만, 나의 절대 능력이 떨어지는 건 아니라고 믿고싶었다. 그래서 한 번 더 다른 기회에 도전해봤다.
(계속)

Sort:  

zorba님이 dj-on-steem님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
zorba님의 [2019/2/5] 가장 빠른 해외 소식! 해외 스티미언 소모임 회원들의 글을 소개해드립니다.

...enerva 뉴욕 dj-on-steem/td> DC 근교 hello-sunshine DC

짱짱맨 호출에 응답하여 보팅하였습니다.

아.. 정말 아쉽네요..
알고리즘 문제 정말 힘듭니다.. 프로그램으로 짜는 것도 힘든데 이런걸 척척 해내는 사람들을 보면 자괴감도 많이 들죠..(특히 중학생애들이 풀었을 때ㅋㅋ)
다음에는 더 좋은 기회가 있기를 바래봅니다.

그 중학생은 아마 한국을 이끌어 갈 인재가 되겠죠 ㅎㅎ

그런 상황이 되면 누구라도 조급해지고 빨리 해결하고 싶지요. 시험 문제는 늘 어려워요, 답은 쉬운데.... ㅎㅎ

학교 졸업하고 이제 시험 좀 안보나 했는데, 끝나질 않네요 ㅎㅎ

인터넷으로 하는 스크리닝 문제는 대부분 떠돌아다니게 되는 것 같아요. 하지만 누구나 처음에는 저렇게 해보면서 느끼지 않을까요..

Posted using Partiko Android

네, 처음이라 몰라서 용감한 상태였습니다 ㅎㅎ 다음엔 잘 찾아보는 걸로.. ^^

저도 이런 프리스크리닝 해봤는데 긴장되니까 어렵더라고요. 다음 이야기 기대됩니다!

시간이 정해져 있다는 압박감이 좀 있습니다. 멘탈 수련을 더 해야 할 것 같아요 ^^

Coin Marketplace

STEEM 0.16
TRX 0.13
JST 0.027
BTC 57642.15
ETH 2578.06
USDT 1.00
SBD 2.49