JAVA/우아한테크코스 4기

[211218] 우아한테크코스 최종 코딩테스트 후기

kth990303 2021. 12. 19. 11:54
반응형

어제, 3주간의 프리코스 과정을 마친 후 최종코딩테스트가 5시간동안 시행됐다.

코딩테스트 주제는 https://github.com/woowacourse/java-pairmatching-precourse 여기에서 볼 수 있다.

 

내 PR은 여기서 볼 수 있다.

https://github.com/woowacourse/java-pairmatching-precourse/pull/4


압박감 속에서 진행됐던 구현

아무래도 5시간이라는 시간제한이 걸려있었고, 중간중간 줌이 꺼졌는지 확인도 했어야됐기 때문에 심적으로 압박감이 느껴진 상태에서 구현을 해야 됐었다.

 

우선 구현 주제는 페어(팀) 매칭이다.

백엔드, 프론트엔드 팀원들의 이름이 각각 md파일로 주어지는데, 이를 파일 입출력을 통해 입력을 받아 페어를 주어진 조건으로 매칭시키는 구현이었다.

개인적으로 느낀 난이도는 3주차 프리코스와 비슷하거나 좀 어려웠다. 그러나 3주차 프리코스는 시간제한이 없었고, 최종 코테는 5시간이라는 시간제한이 있었기 때문에 더 어렵게 느낀 거일 수도 있겠다.

 

일단 파일 입출력에서 1차 당황을 했다. 파일 입출력을 안쓴지 꽤 오래 됐기 때문에 구글링 허용으로 파일 입출력을 검색할 수 있었던 것이 나에겐 정말 다행이었다.

 

그 다음으로, 페어 매칭 조건이 상당히 까다로웠는데 과정 스택, 과정 레벨, 과정 미션명에 따라 객체를 분리하는 걸 요구한 듯한 미션이었지만, 시간이 너무 오래 걸릴 듯하여 나는 하드코딩하였다(...)

그러니까 말 그대로 HashMap에 과정들을 다 때려박은 후에 course는 List<List<String>> 형으로 만들어서 진행한 것이다. course를 List<List<String>>으로 한 이유는, List<> 안에는 특정 미션 정보를, 그 안의 String들은 페어매칭 정보들을 넣기 위해서 이중List로 만든 것이다.

 

또한 프리코스 3주동안 stream, lambda를 열심히 연습했는데,

이번에는 압박감 때문에 당황해서인지 stream, lambda 이용을 거의 사용하지 못했다.

확실히 3주동안만 익힌 기능들이라 내 손에 완벽하게 익진 않았구나 느낄 수 있었다.


이번에도 선택한 MVC 패턴

나는 MVC 패턴을 택하였는데,

전체를 총괄하는 PairMatching 클래스와 Controller끼리 소통할 수 있게,

Controller는 View와 Service에게 명령(?)을 내릴 수 있고,

Service, Domain, View는 Controller와 PairMatching가 무슨 일을 하는지 알 수 없도록 은닉화하였다.

 

또한, Domain에는 페어 매칭에서의 간단한 로직(ex. getter 메소드, 중복 체크 메소드, 특정 index 구하는 메소드)을 추가하였고, Service에서는 Domain에서의 간단한 로직을 이용한 복잡한 로직들을 이용하도록 하였다.

Controller에서는 예외를 던져주거나 검증 로직을 사용하였고, Application이나 PairMatching에서는 Q를 누르기 전까지 매칭을 run해주거나 Controller과 소통하는 역할을 맡도록 하였다.

 

MVC 패턴을 사용해서인지 함수 분리가 철저하게 세세하게 진행될 수 있었고,

덕분에 모든 메소드를 15라인 이하로, depth는 2 이하로 만들 수 있었다.

 

테스트코드 통과는 3시 반에 완료됐으며,

모든 구현은 5시 20분에 완료하였다.

다만, 위에서도 말했다시피, 처음 설계부터 조금 하드코딩적인 면이 있기 때문에 좋은 점수를 받을 수 있을지는 모르겠다.

 

5시 55분에 [이력이 없을 경우 에러메시지를 띄운다]는 구현사항을 뒤늦게 발견해서 이 때 이력없음을 출력해주기만 하고 에러를 던지는 로직은 구현하지 못했는데, 이걸 제외한 나머지 구현은 어느정도 완성한 것 같다. 물론 여기서 내가 놓친 게 또 있을 수 있다.

 

그리고 뒤늦게 발견했지만, 큰 실수가 하나 있어가지고... 이제 그냥 우테코 방향으로 매일매일 기도하고 절하는 방법밖에 없을 것 같다. (이거땜에 어제 멘탈나가서 술마시면서도 멍때림)

 

+) 22.12.05. 추가

지금에서야 적는건데, 사실 큰 실수란... 끝나고 소감문을 안적은 것이었다!

4기때는 끝나고 소감문을 제출하라고 돼있었는데 제출을 안했다ㅋㅋㅋ 그래서 0점처리 되지 않을까 걱정했던 것.

나중에 코치님께 이 부분을 물어봤었는데 크게 상관없다고 해주셨다.


총 145명이 제출하였고, 그 중 100명이 최종 우테코 4기로 뽑힌다.

22년 상반기에 나는 우테코를 할 수 있을까?

 

사실 구현 자체는 했지만, 코드 자체가 좀 스파게티인 면이 없지않아 있고,

특히 큰 실수 하나가 존재하기 때문에 결과가 어떻게 될지 예상이 안된다. (진짜 엄청 큰 실수이기 때문에 기도메타 해야될 듯...)

코테 끝! 일단 술이나 마시자~

3주간 정말 좋은 경험이었다.

객체지향적 설계가 무엇인지 깊게 고찰해보는 시간이 되었고,

개인적으로는 우테코에 붙어서 10개월 동안 객체지향적 설계를 하면서 실력을 키우고, 또 프론트와의 협업을 하면서 api 개발 및 배포경험도 해보고 싶다.

 

일단 우테코가 끝났으니 그동안 밀린 백준 연습이라든지, 리액트 공부를 열심히 하고 자바/스프링 기본기를 다시 한 번 착실히 쌓으면서 30일 발표를 기다려야겠다 ㅎㅎ

 

+) 21.12.31. 추가

https://kth990303.tistory.com/239

 

[211230] 우아한테크코스 4기 최종 결과

다행히 합격. 처음에는 메일이 늦게 와서 불합격인 줄 알았다. 합격해서 정말 기쁘다! 나중에 시간날 때 내용추가예정

kth990303.tistory.com

결과에 대한 내 생각 및 앞으로 할 일을

따로 포스팅으로 작성하였다 :)

 

 

 

 

 

반응형