[우테코 5기 프론트엔드] 프리코스 최종 코딩 테스트 준비 - 기출문제 풀어보기

셔노·2022년 12월 20일
0

우아한테크코스

목록 보기
12/13

4주차 미션이 종료되고 시간이 많이 흐르고 회고록을 뒤늦게나마 작성합니다. 학교에서 진행하는 프로젝트 제출 기간과 우테코를 준비하는 시간이 많이 겹쳐 우아한테크코스 일정이 끝난 뒤 작성된 회고록입니다.

3기 최종 코테 문제였던 지하철 문제를 풀어보았습니다.

🚇 지하철 노선도 경로 조회 미션

  • 요구사항을 콘솔로 변경하여 창작된 버전입니다.
  • github 자세히 보기: 바로가기

🚀 기능 요구사항

등록된 지하철 노선도에서 경로를 조회하는 기능을 구현한다.

- 프로그램 시작 시 역, 노선, 구간 데이터를 초기 설정 해야 한다.
- 거리와 소요 시간은 양의 정수이며 단위는 km와 분을 의미한다.
- 아래의 사전 등록 정보로 반드시 초기 설정을 한다.

초기 설정

  1. 지하철역으로 교대, 강남, 역삼, 남부터미널, 양재, 양재시민의숲, 매봉 역 정보가 등록되어 있다.
  2. 지하철 노선으로 2호선, 3호선, 신분당선이 등록되어 있다.
  3. 노선에 역이 아래와 같이 등록되어 있다.(왼쪽 끝이 상행 종점)
  • 2호선: 교대 - ( 2km / 3분 ) - 강남 - ( 2km / 3분 ) - 역삼
  • 3호선: 교대 - ( 3km / 2분 ) - 남부터미널 - ( 6km / 5분 ) - 양재 - ( 1km / 1 분 ) - 매봉
  • 신분당선: 강남 - ( 2km / 8분 ) - 양재 - ( 10km / 3분 ) - 양재시민의숲

경로 조회 기능

  1. 출발역과 도착역을 입력받아 경로를 조회한다.
  2. 경로 조회 시 총 거리, 총 소요 시간을 함께 출력한다.
  3. 경로 조회 시 최단 거리 또는 최소 시간 옵션을 선택할 수 있다.

예외 처리

  1. 출발역과 도착역은 2글자 이상이어야 한다.
  2. 존재하지 않는 역을 출발역 또는 도착역으로 입력할 수 없다.
  3. 경로 조회 시 출발역과 도착역이 같을 수 없다.
  4. 경로 조회 시 출발역과 도착역이 연결되지 않으면 경로를 조회할 수 없다.
  5. 그 외 정상적으로 프로그램이 수행되지 않은 경우 alert으로 에러를 출력한다.

💻 프로그래밍 실행 결과

지하철 길찾기를 시작합니다.

출발역을 입력해 주세요.
양재시민의숲

도착역을 입력해 주세요.
교대

우선 탐색을 선택해주세요. (최단거리: D, 최소시간: T)
T

결과
- 탐색: 최소시간
- 총 거리: 19 km
- 총 소요시간: 10 분
- 경로: 양재시민의숲 > 양재 > 남부터미널 > 교대

다시 검색할지 여부를 입력해주세요. (재검색: R, 종료: Q)
Q

지하철 길찾기를 종료합니다.

1. 먼저 [지하철 길 찾기] 기능 단위 구현 목록을 작성하기


🚇 [지하철 길찾기] 기능 단위 구현 목록

작성방법 : 🟥: 미완성 / 🟧: 진행중 / ✅: 완료 / ❎: 리펙토링중


1. 주어진 지하철 Data로 초기화한다.

2. 출발역과 도착역을 입력 받는다.

3. 경로조회 옵션 최단거리 또는 최소시간 을 입력 받는다.

4. 선택한 옵션(최단거리 또는 최소시간)으로 가장 최적화된 경로를 알아낸다.

5. 경로의 총 거리와 총 소요시간을 출력한다.

6. 전체 경로도 함께 출력한다.

7. 검색을 완료한 후 다시 검색할지 종료할지 정한다.

8. Error가 발생할 경우, Error를 출력하고 해당 위치에서 다시 재입력 받는다.


2. 🎨 MVC 패턴으로 나눠보기

Controllor

  • 📑 StationApp.js : 지하철 길찾기 컨트롤러 역할

Model

  • 📑 Navigate.js : 지하철 길 안내 비지니스 로직 담당
  • 📑 StationMap.js : 지하철 노선 관련 비니지스 로직 담당

View

  • 📑 InputView.js : 사용자로부터 입력을 받는 역할을 한다.
  • 📑 OutputView.js : 사용자에게 게임 진행 상황과 결과를 출력하는 역할을 한다.

아직은 Model과 Controller가 해야할 일에 대해서 많이 헷갈리기는 하지만, 시험치기 전에 한 번 더 확실하게 다 잡아야할 것 같았다.

  • Model : 정제된 값을 저장하고, 비지니스 로직 처리를 담당함.
  • Controller : View와 Model을 구분하는 역할을 하며, Model의 정보를 View 에 전달해주는 역할을 함

(+) 공부하면서 알게된 추가 사항 !!

  • Service : Controller와 Model 역할 사이에서 비지니스 로직을 담당하며, 처리하는 역할

profile
초보개발자

0개의 댓글