[우테코] 최종 코딩테스트 회고
본문 바로가기
우아한 테크코스

[우테코] 최종 코딩테스트 회고

by IYK2h 2022. 12. 19.
728x90

5시간 매 순간 최선을 다해 잘 싸웠다.

우테코를 고민한다면 꼭 지원해봤으면 한다.

 

 

2022년 12월 17일 13시 5기 최종 테스트

시험을 보기 전에 떨리기도 했지만 설레는 감정이 더 컸다. 프리코스 4주간 너무 즐겁게 시간을 보내서 그런지 기분이 좋았다.

처음 문제를 분석하는데 큰 어려움을 느끼진 못했다. 문제 자체가 엄청 어렵다기보다는 세세한 부분이 중요한 문제 같았다.

구현하는 중간에 조금 아쉽게 구현한 부분이 있다고 느껴졌지만, 다시 돌아가서 수정하기엔 시간이 없을 것 같았다. 그리고 시험을 보기 전에 기능 구현 우선이라고 안내받아, 작동되는 쓰레기를 만들기로 다짐하고 그냥 진행했다.

추가로 제공해준 라이브러리가 무작위로 값을 보내주는데, 내가 설계한 순서와 맞지 않아 살짝 당황했다. 내가 생각한 순서는 요일 기준으로 먼저 한 사람에게 메뉴를 추천하고 그다음에 다음 사람에게 메뉴를 추천하는 순서였다. 하지만 라이브러리가 제공하는 순서는 요일은 그대로, 사람만 바뀌면서 메뉴 추천하는 방식이었다. 그래서 그 부분을 배열로 받아서 처리했다.

public String[][] getResult() {
  for (int i = 0; i < 5; i++) {
    for (int j = 0; j < coaches.size(); j++) {
      if (i == 0) {
        arr[j][i] = coaches.get(j).getName();
      }
      arr[j][i + 1] = (recommendForOneDay(categoryOrder.get(i), coaches.get(j), j));
    }
  }
  return arr;
}

기존에 사람을 기준으로 리스트를 만들어서 바로 값을 더해주는 로직이었는데, 생각한 순서와 맞지 않아 수정하게 되었다.

이 문제가 가장 큰 문제였다고 생각했지만, 아니었다.

아쉬운 점

현재 싫어하는 음식을 0개를 입력하면 스택 오버플로가 발생한다.

생각하지 못한 오류가 발생해서, 재입력하는 부분을 지우고 제출했다. 그래도 오류는 발생한다.

이유는 사용자가 입력할 때 예외 처리를 잘못했다.

public void inputHateFoods(List<String> input) {
  if (input == null || input.size() > 2) {
    throw new IllegalArgumentException("싫어하는 음식은 0~2 개만 가능합니다.");
  }
  hateFood.addAll(input);
}

여기서 왜 input == null을 예외 처리했는지는 아직도 의문이다…. 왜 그랬을까.

이 부분에서 테스트 코드만 작성했다면 이렇게 꼬이진 않았을 거라 생각되어 아쉬운 부분 중 하나이다.

사용자별로 싫어하는 음식을 넣는 부분에서 반복문이 작동되는 위치도 잘못되었다고 생각된다. 현재는 inputView에서 값을 반복해서 입력받는데, 이는 컨트롤러에서 해야 했었다. 그래야 에러를 잡는데 훨씬 수월했을 것이다.

내부적인 기능을 잘 구현했다고 해도 입력, 예외 처리 부분에서 제대로 구현하지 못해서 너무 아쉽다.

이번 시험을 통해 배운 것은 테스트 코드가 얼마나 중요한지 알 수 있었다. 추가로 작은 부분에서 꼬이거나, 잘못된 코드가 있을 때 나중에 찾기 어렵다는 것이었다.

아쉽지만 어쩌겠나 다시 공부해야지…. 이번 주는 다른 사람들의 코드를 보면서 리뷰도 남기고, 공부할 생각이다. 파이팅이다.

728x90

댓글