와!!!!!!!!
우테코 1차를 통과했다!!!!
동네 사람들! 제가 우테코 1차를 통과했어요!! 이게 진짠가~~
1차 합격 메일을 받고 너무 기뻤다.
하지만 기쁨도 잠시, 빨리 최종 코딩테스트를 준비해야겠다는 생각에 휩싸였다.
그래서 지난 기수의 코딩 테스트였던 `페어 매칭 프로그래밍`을 풀어보기로 했다.
지난 기수엔 아쉽게도 안드로이드가 없어 자바와 자바스크립트로 된 문제밖에 없었다.
그래서 그냥 필요한 마크다운파일만 다운받아서 코틀린으로 풀어보았다.
근데 왠걸.. 너무 어려웠다. 이거 대체 어떻게 푸는거야..
분기처리가 굉장히 많은 문제인데 else와 when(switch)을 쓰지 말라니..
물론 프리코스동안 enum클래스를 통해 분기처리하는 방법을 맛있게 써먹긴했지만 이건 좀 무리였달까..?ㅋㅋ
여튼 그렇게 페어 매칭 프로그래밍에서 멘탈이 나가고
"나.. 과연 최종 코딩 테스트 통과할 수 있을까..?"
하는 걱정에 휩싸인채 17일 토요일에 최종 코딩테스트를 보고 왔다!
몽촌토성역 2번출구로 내리면 바로 우아한 형제들의 큰집이 나온다!
2층으로 올라갔더니 와이파이
사용방법을 알려주시고 펜과 공책을주셨다!
구경해보고 싶었지만 시험 볼 생각에 너무 떨려서 일단 가방에 넣었다.
그리고 나중에 집에와서 보니,,
제조국: 스위스에서 너무 놀랐다.
뭐? 메이드 인 차이나가 아니라고?? - "Made in Swiss"
펜으로 이렇게 간지날 일인가 ㅋㅋ 저도 펜입니다!!
자 이제 기쁨은 잠시 접어두고 시험으로 돌아가보자..
시험 시작 전에 감독관님께서 난이도에 대한 이야기를 하셨다.
"저번이랑 저저번 기수보단 훨씬 쉬울거에요. 2~3시간이면 풀 수 있는 정도로 만들었으니까 걱정하지마세요!"
처음 듣고는 "아! 차라리 너무 어려워서 다 같이 못 풀길 바랐는데! "라고 생각했다.
근데 막상 다 풀어보고 나니 쉬운게 나았던 것 같다ㅋㅋㅋ
문제는 다음 링크에 있다!
https://github.com/woowacourse-precourse/kotlin-menu
페어 매칭 프로그램을 풀 때는 뇌정지가 왔었는데 다행히 점메추(점심 메뉴 추천)을 풀 때는 그렇지 않았다!!
이전에 여러 문제들을 풀면서 나의 문제점을 깨달았었다.
문제를 훑어 대충 파악하고 풀다가 놓친 조건들이나 내가 생각치 못한 상황들 때문에 몇번인가 코드를 많이 수정해야했다.
그래서 이번엔 절대 키보드를 건드리지 않고, 첫 1~2시간은 문제를 읽고 조건을 정리하고 문제해결방법을 설계하는데 사용했다.
태블릿 사용이 금지되어 간만에 필통과 공책을 챙겼고 공책에 그려가며 문제해결방법을 설계했다.
약 1시간 정도 투자하고 나니 어떻게 코드를 짜야할지가 보이기 시작했다.
필요하다고 생각된 클래스들을 패키지별로 만들어놓고 시작하였다.
설계를 해놓고 시작하니 코드를 치다가 고민하는 시간도 훨씬 줄어들고 중간에 뇌절이 와서 멈추는 경우도 없었다.
조건을 살짝 잘못 이해하여 다 풀고 테스트케이스가 틀리는 일이 있기는 했지만 금방 고칠 수 있었다.
코드를 한 곳에 몰아적지않고 잘 정리해서 적어서 빠르게 해결할 수 있었던 것 같다.
내가 문제였던 부분은 메뉴를 추천하는 순서였다.
한 카테고리가 주어지면 멘토들이 전부 메뉴를 추천하고 새로운 카테고리가 주어져야하는 형태인데
내가 카테고리를 먼저 다 만들고 한 멘토가 전부 추천하면 다음 멘토로 넘어가는 형식으로 구현해서 문제였다.
구현을 우선하여 마치고 테스트 케이스가 성공했을 때 시험 시간이 1시간 반정도 남아있었다.
그때부턴 상수화 빼먹은 곳에 상수화를 진행하는 등 리팩토링을 진행했다.
리팩토링을 어느 정도 진행한 뒤엔 InputValidator에 대한 테스트 코드를 작성했다.
그리고 다른 테스트 코드를 작성하려고 했는데 그때 깨달았다.
내가 랜덤값 생성에 대한 부분을 추상화하지 않아서 테스트할 수 없다는 것을,,,
깨달았을 때 침착하게 했으면 가능했을 수도 있겠지만 좀 당황하기도 했고 시간이 많지 않다고 생각하여 포기했다.
남은 시간을 보고 더 이상 새로운 코드를 작성할 수는 없겠다고 판단하여 프리코스 당시 받았던 피드백들을 켜놓고 내가 짠 코드에서 놓친 부분이 없는지 더 수정할 부분이 없는지 확인하였다.
그리고 20분쯤 남았을 때 소감문을 적기 시작했다!
소감문
항상 일주일 동안 고민하며 풀다 이렇게 다섯 시간 만에 짧게 풀게 되니 꽤나 느낌이 달랐습니다.
일주일 내내 어떻게 하면 더 예쁘고 보기 좋은 코드가 될까 고민했었는데 이것을 다섯 시간 동안 하려고하니 자신과 많은 타협을 봐야했습니다.
사실 일주일 동안 하던 것을 다섯 시간 만에 해야 하니 오늘 문제를 풀지 못할 수 있겠구나 라는 생각을 많이 하면서 왔습니다.
그런데 프리코스 4주 간의 노력 덕분인지 생각보다 빠르게 문제가 풀렸습니다. 물론 이전처럼 interface를 활용해서 랜덤값을 테스트하는 등의 일은 실패했지만 그래도 중간에 허둥지둥하는 일 없이 침착하게 문제를 풀어낸 것에 꽤나 성취감을 느꼈습니다.
처음 한 시간 동안은 펜을 잡고 문제를 쭉 읽으며 요구사항을 정리하고 어떻게 풀어나가야할지 정리했습니다. 무작정 코딩하지 않고 정리하고 시작하니 코딩이 훨씬 빨라졌습니다. 생각해놓은대로만 코드를 짜면 됐고 코드는 프리코스 4주간, 그리고 그 이후에 연습했던 결과로 술술 적혔습니다.
물론 모든 부분이 설계대로 딱 맞아 떨어지진 않았습니다. 그러나 설계를 잘 해놓고 시작한 덕분에 수정 소요가 크지 않았습니다.
결국 약 1~1.5시간 정도를 남기고 코드를 완성할 수 있었고 그 뒤로는 리팩토링과 테스트 코드 작성을 진행했습니다. 사실 코드를 다 짜고 테스트 코드를 적는 것이 말이 안되긴 하지만 그래도 혹시 제가 놓친 부분을 찾을 수 있지 않을까 하고 짜보았습니다.
결국 한 객체에 대한 테스트코드밖에 작성하지 못해 많이 아쉬웠고 좀 더 분리 및 테스트 코드를 작성하고싶었지만 앞으로 좀 더 발전해보도록하겠습니다!
프리코스동안 감사했고 앞으로도 꼭 뵙고싶습니다!
이제 진짜 후기.. ㅋㅋ
페어 매칭 프로그램에서 겁을 많이 먹었었는데 그에 반해 좀 더 쉽게 느껴졌다.
솔직히 최종 코테 못 풀줄 알았는데 풀고 리팩토링도 할 시간이 남아서 너무 다행이었다.
물론 집와서 랜덤 숫자 생성을 추상화하여 카테고리 생성 테스트를 성공하고 조금 아쉽긴 했다.
내가 추상화를 좀 더 연습했다면 시험에서도 할 수 있었을텐데..ㅠ
앞으로라도 열심히해야지!
아 그리고 시험을 보고 오니 우아한 테크 코스와 우아한 형제들에 더더욱 가고싶어졌다.
태어나서 시험보다가 접고 다 같이 쉬는 시험은 처음이었다.
중간에 쉬는 시간이 있었는데 그냥 쉬라고 하면 누군가는 시험을 보고 누군가는 쉬면서 조급할 수 있는데,
그러지 않도록 모두 노트북을 덮게하고 쉬게한 것은 꽤나 충격적이었다!
또 우리를 위해 준비해주신 펜, 공책과 수많은 간식들에 감동받았다,, 이게 우형??
10만원 어치의 간식.. 나갈 때 멘토님들이 간식 챙겨가라고 하셨었는데...
진짜 마음 같아서는 다 챙겨가고 싶었는데 그날 가방에 짐이 너무 많아서 거의 못 들고 왔따.. ㅠㅠ
시험에서 장비는 아무것도 주어지지 않아서 노트북, 충전기, 마우스, 키보드 다 개인 지참이다!
나는 노트북, 충전기, 마우스, 키보드, 손목 받침대, 거치대를 다 챙겼더니 가방이 그만.. 너무 무거웠다..
아 내 간식 너무 아까워!!
이제 진짜 결과 발표까지 일주일 정도 남았는데.. 너무 떨린다.
누가 머리 때려서 일주일만 기절시켜줬으면 좋겠다.
그 김에 크리스마스랑 이브도 모르고 지나가게... ㅋㅋㅋㅋㅋ
제발 진짜 너무 붙고싶어요!!!! 사랑합니다 우형!
그럼 다음주에 결과와 함께 돌아올게융,,
'우아한 테크 코스' 카테고리의 다른 글
[우아한테크코스] 로또 미션 후기 (0) | 2023.02.27 |
---|---|
[우아한테크코스] 합격 및 온보딩 미션 후기 (0) | 2023.02.27 |
우아한 테크 코스 4주차(다리 건너기) 회고 (0) | 2022.12.21 |
우아한 테크 코스 3주차(로또) 회고 (0) | 2022.11.17 |
우아한 테크 코스 2주차(숫자 야구 게임) 회고 (0) | 2022.11.09 |