DRAKE

RESUME

우아한 테크코스 최종 코딩 테스트

2022/12/30

6 min read

RETROSPECT

thumbnail

풀이 보러가기

잠실 캠퍼스에 도착하고 체크인을 했다 노트와 볼펜을 선물로 주셨는데 받아보니 정말 더욱 더 가고싶은 마음이 커졌다

최종코딩테스트 과제는 menu추천이였다

기능 요구 사항

코치들은 월, 화, 수, 목, 금요일에 점심 식사를 같이 한다. 메뉴를 추천하는 과정은 아래와 같이 이뤄진다. 월요일에 추천할 카테고리를 무작위로 정한다. 각 코치가 월요일에 먹을 메뉴를 추천한다. 화, 수, 목, 금요일에 대해 i, ii 과정을 반복한다. 코치의 이름은 최소 2글자, 최대 4글자이다. 코치는 최소 2명, 최대 5명까지 식사를 함께 한다. 각 코치는 최소 0개, 최대 2개의 못 먹는 메뉴가 있다. (, 로 구분해서 입력한다.) 먹지 못하는 메뉴가 없으면 빈 값을 입력한다. 추천을 못하는 경우는 발생하지 않으니 고려하지 않아도 된다. 한 주에 같은 카테고리는 최대 2회까지만 고를 수 있다. 각 코치에게 한 주에 중복되지 않는 메뉴를 추천해야 한다. 예시) 구구: 비빔밥, 김치찌개, 쌈밥, 규동, 우동 → 한식을 3회 먹으므로 불가능 토미: 비빔밥, 비빔밥, 규동, 우동, 볶음면 → 한 코치가 같은 메뉴를 먹으므로 불가능 제임스: 비빔밥, 김치찌개, 스시, 가츠동, 짜장면 → 매일 다른 메뉴를 먹으므로 가능 포코: 비빔밥, 김치찌개, 스시, 가츠동, 짜장면 → 제임스와 메뉴가 같지만, 포코는 매번 다른 메뉴를 먹으므로 가능 메뉴 추천을 완료하면 프로그램이 종료된다. 사용자가 잘못된 값을 입력한 경우 throw문을 사용해 예외를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.

처음에 문제를 받고 어떻게 구성할지부터 생각했다 Coach라는 클래스를 만들어 클래스마다 못먹는 음식,추천 음식을 컨트롤 해야겠다는 생각이들었다 ','로 구분하여서 코치를 생성하였고

그다음은 못 먹는 음식을 받아야했다 생성된 코치들을 Array.Map 매서드를 활용해 각각 입력하려고 했다 입력을 할 때는 잘못된 값이라면 다시 입력을 받아야한다. 잘못된 입력값이라면 다시 입력을 받는 것 까지는 성공하였지만 왜일까 다음 요소로 넘어가지 않았다

입력을 받는 부분이 비동기로 이루지는데 이부분때문인가 하여 Promise.all도 사용해보고 성공적으로 입력을 받았을 때는 Promise resolve를 보내보기도하고 비동기처리를 하기위해 많은 노력을 해보았지만 처음 요소만 작동할 뿐 다음 요소로 건너가지않았다 이 부분에서 많은 시간을 할애했지만 해결하지는 못했다...

제출시간이 다가오고 고민했던 부분들을 보여주기라도 하자하여 작성했던 코드들을 커밋했다. 옳지않은 커밋이였지만 이거라도 보여주자 했기에 push를 하고 최종 제출했다

고생해서 여기까지왔는데 여태 잘 했던 비동기처리에서 막히는 구나 아쉬움이 너무 크게 다가왔습니다. 해당 부분만 해결했다면 무리없이 할 수 있을것 같았기에 더욱 아쉬웠던 것 같다

우테코에서 제공하는 라이브러리를 사용해 사용자입력을 받는데 해당 매서드가 어떻게 작동하는지를 자세하게 알았다면 손쉽게 하지않았을까 생각이 들었다

합격하지 못 하더라도 개인공부를 열심히하여 배민에서 연락이 오도록 복수해야겠다!

profile

한동룡