우아한 테크코스 8기 최종 코딩테스트 후기

이 글의 목차10개
  1. 🎊 우아한 테크코스 8기 1차 합격
  2. 1) 과거 문제 풀어보기
  3. 2) 내게 부족한 것을 찾기
  4. 부족한 점을 보완하기
  5. 템플릿
  6. 루틴
  7. 시험장 입장
  8. 최종 테스트 (행성 로또)
  9. 도전 과제
  10. 나의 이야기

🎊 우아한 테크코스 8기 1차 합격

길었던 프리코스 기간을 거치고, 운이 좋게도 1차 심사에 합격하여 코딩테스트를 준비하게 되었습니다!

오후 3시에 결과 발표가 예정되었지만, 메일이 도착하는 시간은 사람마다 천차만별이었습니다. (몇 시간 뒤에 메일을 받은 분들도 있었습니다.)

저는 3시 2분에 메일이 도착했고, 정말 떨리는 시간이었습니다..

1. 준비 과정

1) 과거 문제 풀어보기

1차 합격 메일을 받은 날로부터, 코딩테스트까지 약 12일의 기간이 남아 있었습니다.

우테코의 코딩테스트 방식은 기존의 PS 문제들처럼 요구하는 자료구조를 파악하여 빠르고 효율적으로 풀어내는 방식이 아니라,

요구조건에 맞춰 객체지향적인 프로그램을 완성하는 것이기 때문에 나만의 전략과 내게 가장 편한 루틴을 만들어야 한다고 생각했습니다.

또한, 한 문제를 푸는데 요구되는 시간이 많기 때문에 하루에 1문제씩 집중하여 풀어내는 것을 목표로 했습니다.

2) 내게 부족한 것을 찾기

부족한 점을 보완하기

10일 내외의 시간 동안 알고리즘 풀이 능력 자체를 향상시키는 것은 힘들다고 생각했습니다.

제게 부족한 점을 찾고 보완하는 것이 1순위라고 생각되어, 스터디를 진행하기보다 혼자 문제를 풀고 부족한 점을 찾으려 노력했습니다.

과거 문제들을 풀며 내게 어떤 문제들이 많이 발생하는지를 파악하고 그것에 대한 대책을 미리 세우고자 했습니다.

저는 매일 알고리즘 문제를 풀고 있었기 때문에, 코딩 테스트는 자신 있다!

라고.. 생각했지만, 문제를 몇 개 풀면서 테스트코드에서 발생한 에러들에 대처하지 못하였습니다.

실전에서 테스트 코드에서 발생하는 에러 해결하지 못하면 0점 처리 될 수 있기 때문에 테스트 코드에서 발생할 수 있는 에러들을 파악하는 데에 집중하려고 노력했습니다.

추가적으로 우테코의 camp.nextstep.edu.missionutils 라이브러리에서 제공하는 매서드들이 ImmutableCollection을 리턴하여 에러가 발생한 경험도 몇 번 하게되어, 라이브러리에서 제공하는 메서드를 어떻게 가공해야할지도 확인했습니다.

템플릿

시험 전에 찾아보았던 글들에서는 언제 어떤 것이 필요한지 확인하고 템플릿으로 만들어 놓으라는 조언이 많았습니다.

하지만, 저는 개인적으로 언제 어디서 어떤 식으로 생각하고 행동할지를 미리 정해두고 행동한다는 것이 익숙하지 않아, 문제를 꼼꼼히 읽고 생각의 흐름을 잘 따라가는 데에만 집중하려고 노력했습니다.

  • 문제 꼼꼼히 읽기
  • 막힐 때 일단 커밋하고 실행해보기
  • 커밋할 땐 항상 리드미 갱신하기

위 목록처럼 시험 중에 지켜야 하는 가장 중요한 루틴들만 명심하고, 발생할 수 있는 문제의 경우들과 참고할 수 있는 문법들 정도만 노션에 간단히 정리했습니다.

2. 시험 전 날 / 당일

루틴

시험 하루 전부터는 추가적인 학습보다는 최상의 컨디션을 지키는 것이 중요하다고 생각했습니다.

그래서 저는 시험장과 도보 10분 거리에 있는 숙소를 잡아 숙박 후에 시험을 응시했습니다.

우리의 친구 제미나이가 전날부터 시험까지의 루틴을 설계해주었고 그대로 따랐습니다.

실제로 효과가 있었는지는 모르지만 정해진 루틴을 정확히 따르는 것 만으로도 심리적 안정을 가져다주었던 것 같습니다.

참고로 저의 시험 당일 아침과 점심은 서브웨이였습니다.

무려 배민으로 주문한.

촌놈 인증샷도 하나 찍어줬습니다.

시험장 바로 옆 스타벅스에는 많은 사람들이 노트북으로 코드를 보고 있었습니다.

마치 재야의 고수, 코딩 괴물처럼 느껴지던 존재들을 같은 공간에서 같은 코드를 보고 있는 사람으로 마주하니, 조금이나마 긴장이 풀렸던 것 같습니다.

눈 감고 심호흡하며, 준비했던 것만 떨지 않고 잘 해내자는 마인드를 되새겼습니다.

시험장 입장

코딩테스트 후기 사진에서만 보던 우아한 형제들 건물에서 내가 최종 테스트를 치르고 있다는 것에 감정이 고양되어 이 경험을 즐겨보자는 생각으로 대기했습니다.

이런 곳에 속하게 된다면 얼마나 기쁠까 상상도 했습니다..

시험 자리가 좁을 수 있다는 공지가 있었고, 다른 후기에서도 자리가 협소하다는 평가가 많아서 어느 정도 마음의 준비를 하고 자리에 앉았습니다.

생각보다 앞 뒤 간격은 넓었고 좌우 간격은 좁았습니다.

패딩을 입고 앉으면 서로 옷이 닿을 수 있는 정도라고 생각하면 좋을 것 같습니다.

시험 시작 전, 옆 자리 분과 말도 주고받고 서로 응원해주며 좋은 에너지를 받을 수 있었습니다.

꼭 우테코에서 다시 뵐 수 있기를!!!

3. 코딩테스트

최종 테스트 (행성 로또)

8기 최종 테스트는 기존 방식과 많은 것들이 달랐습니다.

  • 문제풀이 4시간 + 소감문 1시간으로 시간 분리 (5시 이후 푸시 불가)
  • 3주차 미션의 변형 문제 출제
  • 도전 과제 항목 추가

3주차에 진행했던 로또 문제의 변형이었기 때문에, 시간 내에 구현하는 것은 어렵지 않아 보였습니다.

다만, 중요한 것은 구현을 빠르게 끝낸 후에 도전 과제에 어떤 기능을 넣을지 고민하는 것이었습니다.

OutputViewInputView에 주어지는 기본 메서드들을 수정하면 안 된다는 규칙이 있었기에, 입력값을 수정할 수 없었고 도전과제는 내부적인 추가 로직과 출력으로만 허용되는 것 같았습니다.

도전 과제

기능 구현과 테스트 코드 빌드를 확인하는 데는 3시간 정도가 걸려, 도전 과제를 추가할 시간이 1시간 정도밖에 남지 않은 상황이었습니다. 저는 우테코 자소서를 작성하고, 프리코스를 진행하면서 느꼈던 점들과 3주차 로또 미션을 수행하며 겪었던 경험을 엮어 도전 과제를 수행하고자 했습니다.

나의 이야기

저는 오픈미션을 제출한 뒤 1차 심사 결과를 기다리며 저속노화 마인드셋이라는 책을 읽었습니다. 그 중 가장 기억에 남는 문장입니다.

**사람들은 당첨을 바라고 로또를 구매하는 것을 바보 취급 하면서, 스스로의 건강에 대해서는 마치 건강한 유전자 로또에 당첨된 것처럼 먹고 행동한다. **

건강은 특정한 행동으로 급격히 좋아지고 나빠지는 것이 아니라, 매일 꾸준히 관리하며 건강의 복리를 챙겨야 한다는 말이었습니다.

이 내용을 읽으며 저는 나의 성장과 성공 또한 마치 로또처럼 생각하고 있지 않았을까 고민했습니다. 솔직하게 말하자면, 우테코 지원서를 작성하며 저는 막연히 우테코에 들어가게 되면 코딩을 잘 하는 사람이 되고, 좋은 회사에 취직할 수 있는 왕도라고 생각했습니다.

하지만, 프리코스에서 제가 공부하며 느꼈던 것은 그런 왕도와는 아주 달랐습니다. 프리코스에서 주어진 것은 생각보다 단순한 과제와 조건들 뿐이었음에도 많은 사람들과 같은 문제를 해결한다는 것 자체만으로 많이 배우고, 성장할 수 있었습니다. 제게 필요한 것은 당장의 작은 노력과 성취들을 놓지 않고 꾸준하게 성장해나가는 것이라고 느꼈습니다. 인생 전반에 걸친 나의 성장은 단숨에 이뤄지는 로또 같은 것이 아니라, 매일의 작은 노력으로 이루어질 수 밖에 없다는 생각을 했습니다.

그런 점에서 노력과 성장에도 복리가 있다고 생각했습니다. 복리라는 것은 시간이 지날 수록 그것이 무섭도록 크게 불어나게 되고, 오늘의 작은 노력은 몇 십년 뒤의 엄청난 결과로 다가올 수 있다고 생각했습니다. 당장 오늘과 내일의 나는 다르지 않을 수 있지만, 노력의 복리를 꾸준히 쌓아가다 보면 현재는 스스로에게 벅찬 도전과 성취를 쉽게 거머쥘 수 있는, 대단한 일을 어렵지 않게 해낼 수 있는 그런 멋진 사람이 될 수 있지 않을까 생각했습니다.

프리코스에서 3주차 로또 미션을 구현할 때, 수 없이 프로그램을 돌려봐도 로또를 구매하는 가격보다 당첨금이 커서 수익률이 100%가 넘는 경우는 보지 못했습니다. 하지만, 보잘 것 없는 시작으로도 꾸준한 노력이 있다면 로또 당첨과 같은 성장이 일어날 수 있을까? 라는 생각으로 복리 계산기를 만들게 되었습니다.

도전 과제에 대한 설명을 README.md에 적어야 했기에, 위 사진처럼 적고 기능 목록을 추가했습니다.

사실 집 오는 기차에서 다시 보니 너무 공상에 빠져 오글거리게 적은게 아닌가 싶어 조금 민망했습니다.

문제에서 요구한 Randoms.pickUniqueNumbersInRange 메서드를 이용하여 0~30%의 무작위 성장을 매 해마다 이룬다고 가정하였습니다.

시작 값은 로또를 구매한 금액만큼이며, 70년 이후까지 10년마다 얼마나 값이 커지는지 출력합니다.

100,000원으로 로또를 구매했을 때의 결과입니다.

시험장에서 코드를 실행했을 때, 어이 없을 정도로 큰 값이 나와서 웃기면서도 복리의 힘은 정말 대단하다는 생각을 했습니다.

long이 아니라 BigInteger를 사용해야하나 고민했지만, 시간이 부족해서 변경하지는 못했습니다.

4. 마무리

우테코 프리코스를 끝내고, 코딩 테스트를 치르기까지 개인적으로 많은 고민들을 했습니다.

4학년 2학기를 마치고, 사회로 나갈 준비를 해야 하는 압박 속에서 앞으로 어떻게 살아야 행복을 찾을 수 있을까 하는 것들이었습니다.

인생의 궁극적인 목적이 행복이라는 것에는 이견이 없습니다. 그리고 제게 성장이란 인생 전반에 만족감과 행복을 가져다 주는 것입니다.

하지만, 성장에는 끝 없는 도전이 따르고, 도전은 필연적으로 시련과 고난이 동반될 수 밖에 없습니다.

그런 점에서 도전 속에서 일어나는 모든 과정과 결과들을 겸허히 받아들이고 나아가는 태도가 필요하다는 생각을 합니다.

그렇지만, 아직은 그런 시련과 고난이 개인적인 실패로 받아들여지기에 그것들이 두렵고 무서운 것이 사실입니다.

그런 시련이 가득한 과정에서도 내가 행복할 수 있을지 걱정이 들기도 합니다.

**이 코딩테스트 후기도 원래는 적지 않으려 했습니다. **

약 10일 후에 발표되는 최종 결과를 본 뒤에 남기는 후기는 확실한 성공담이 될 수 있으니까요.

그럼에도 이 글을 미리 작성하게 된 것은 시련과 고난이 넘쳐날 수 밖에 없는 앞으로의 삶에서 그것을 패배, 혹은 실패처럼 받아들이지 않고 그저 내 성장의 과정으로 바라보고 싶었기 때문입니다.

아직은 앞으로의 실패들이 많이 두렵지만, 이 글을 필두로 저의 성장 과정을 사랑하고자 합니다.

시련은 있어도 실패는 없다는 말로 후기를 마무리 하겠습니다. 감사합니다!

전체 글 보기