From 2eb8576c6913db768fc781550cae1a258f0528f2 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 13:27:10 +0900 Subject: [PATCH 01/25] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..31549b237 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,66 @@ +미션 - 지하철 노선도 경로 조회 미션 +======================== + +우아한테크코스 프리코스 온라인 테스트 +------------------------ + +
+ + +### 지하철 노선도 경로 조회 미션 + +``` +목표 : 등록된 지하철 노선도에서 경로를 조회하는 기능을 구현한다. +``` + + +
+ +*** + +
+ +### 기능 구현 목록 + +1. [ ] 프로그램 시작 시 주어진 역, 노선, 구간 정보로 초기 설정을 한다. + + +1. [ ] 시작 화면을 출력 클래스에 구현한다. + + +1. [ ] 원하는 기능을 선택하는 화면을 구현한다. + - [예외사항] 사용자 입력이 주어진 선택지가 아닌 값으로 입력된다.(공백 포함) + + +1. [ ] 경로 기준을 선택하는 화면을 구현한다. + + +1. [ ] 출발역을 입력받는 화면을 구현한다. + - [예외사항] 출발역이 역 목록에 존재하지 않는다. + + +1. [ ] 도착역을 입력받는 화면을 구현한다. + - [예외사항] 도착역이 역 목록에 존재하지 않는다. + - [예외사항] 도착역이 입력받은 출발역과 같다. + + +1. [ ] 조회 결과를 출력하는 화면을 구현한다. + + +1. [ ] 거리를 기준으로 최단거리 경로를 연산하는 클래스를 구현한다. + + +1. [ ] 시간을 기준으로 최단시간 경로를 연산하는 클래스를 구현한다. + + + + +
+ +*** + +
+ +## 📝 License + +This project is [MIT](https://github.com/woowacourse/java-subway-path-precourse/blob/master/LICENSE.md) licensed. From 722b3328e5ca9796a4ec1511430cf07e6e98c75d Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 14:10:25 +0900 Subject: [PATCH 02/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=A8=20=EA=B8=B0=EB=B3=B8=20=EC=84=A4=EC=A0=95=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/subway/Controller/Initializer.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/subway/Controller/Initializer.java diff --git a/src/main/java/subway/Controller/Initializer.java b/src/main/java/subway/Controller/Initializer.java new file mode 100644 index 000000000..18428bb00 --- /dev/null +++ b/src/main/java/subway/Controller/Initializer.java @@ -0,0 +1,40 @@ +package subway.Controller; + +import java.util.Arrays; +import java.util.List; +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; +import subway.domain.StationRepository; + +public class Initializer { + + private static List INITIALSTATION = Arrays + .asList("교대역", "강남역", "역삼역", "남부터미널역", "양재역", "양재시민의숲역", "매봉역"); + private static List INITIALLINE = Arrays.asList("2호선", "3호선", "신분당선"); + private static List LINETWO = Arrays.asList("교대역", "강남역", "역삼역"); + private static List LINETHREE = Arrays.asList("교대역", "남부터미널역", "양재역", "매봉역"); + private static List LINESHINBUNDANG = Arrays.asList("강남역", "양재역", "양재시민의숲역"); + private static List> INITIALLINESTATION = Arrays + .asList(LINETWO, LINETHREE, LINESHINBUNDANG); + + public static void initializeBaseSetting() { + initializeLine(INITIALLINE); + initializeStation(INITIALSTATION); + } + + private static void initializeStation(List INITIALSTATION) { + for (String stationName : INITIALSTATION) { + Station station = new Station(stationName); + StationRepository.addStation(station); + } + } + + private static void initializeLine(List INITIALLINE) { + for (int i = 0; i < INITIALLINE.size(); i++) { + Line line = new Line(INITIALLINE.get(i)); + line.addLineStation(INITIALLINESTATION.get(i)); + LineRepository.addLine(line); + } + } +} From 7e47547ff884b58e372934d089a64dc0eb16f475 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 14:22:12 +0900 Subject: [PATCH 03/25] =?UTF-8?q?feat:=20=EC=8B=9C=EC=9E=91=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=ED=99=94=EB=A9=B4=20=EC=B6=9C=EB=A0=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Views/OutputView.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/subway/Views/OutputView.java diff --git a/src/main/java/subway/Views/OutputView.java b/src/main/java/subway/Views/OutputView.java new file mode 100644 index 000000000..eff775a6a --- /dev/null +++ b/src/main/java/subway/Views/OutputView.java @@ -0,0 +1,14 @@ +package subway.Views; + +public class OutputView { + private final static String MAINSCREEN = "## 메인 화면"; + private final static String ROUTESEARCHSELECTION = "1. 경로 조회"; + private final static String PROGRAMEXIT = "Q. 종료"; + + protected static void printMainSelection(){ + System.out.println(MAINSCREEN); + System.out.println(ROUTESEARCHSELECTION); + System.out.println(PROGRAMEXIT); + System.out.println(); + } +} From 2be78c1c34d42c0e44f6193e61556bdd3fb6f677 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 14:41:49 +0900 Subject: [PATCH 04/25] =?UTF-8?q?feat:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EA=B2=80=EC=82=AC=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/utils/ErrorValidator.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/subway/utils/ErrorValidator.java diff --git a/src/main/java/subway/utils/ErrorValidator.java b/src/main/java/subway/utils/ErrorValidator.java new file mode 100644 index 000000000..3d79f403f --- /dev/null +++ b/src/main/java/subway/utils/ErrorValidator.java @@ -0,0 +1,15 @@ +package subway.utils; + +import java.util.InputMismatchException; +import java.util.List; + +public class ErrorValidator { + private final static String ERRORMESSAGE = "[ERROR] "; + private final static String WRONGUSERINPUT = "잘못된 입력입니다."; + + public static void checkMainSelection(List MAINSELECTLIST, String userSelection){ + if (!MAINSELECTLIST.contains(userSelection)) { + throw new InputMismatchException(ERRORMESSAGE + WRONGUSERINPUT); + } + } +} From 1877d9bc71b0206b2bc47fdba75ed5f395167692 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 15:53:33 +0900 Subject: [PATCH 05/25] =?UTF-8?q?feat:=20=EA=B2=BD=EB=A1=9C=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Views/OutputView.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/Views/OutputView.java b/src/main/java/subway/Views/OutputView.java index eff775a6a..70be2dfac 100644 --- a/src/main/java/subway/Views/OutputView.java +++ b/src/main/java/subway/Views/OutputView.java @@ -1,14 +1,28 @@ package subway.Views; public class OutputView { + private final static String MAINSCREEN = "## 메인 화면"; private final static String ROUTESEARCHSELECTION = "1. 경로 조회"; private final static String PROGRAMEXIT = "Q. 종료"; - protected static void printMainSelection(){ + private final static String ROUTESCREEN = "## 경로 기준"; + private final static String MINDISTANCEROUTE = "1. 최단 거리"; + private final static String MINTIMEROUTE = "2. 최소 시간"; + private final static String BACKOPTION = "B. 돌아가기"; + + protected static void printMainSelection() { System.out.println(MAINSCREEN); System.out.println(ROUTESEARCHSELECTION); System.out.println(PROGRAMEXIT); System.out.println(); } + + protected static void printRouteSelection() { + System.out.println(ROUTESCREEN); + System.out.println(MINDISTANCEROUTE); + System.out.println(MINTIMEROUTE); + System.out.println(BACKOPTION); + System.out.println(); + } } From a2ae1b195d7df6a8822e5f68e6c04d91facb3d9c Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 15:54:38 +0900 Subject: [PATCH 06/25] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Views/InputView.java | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/subway/Views/InputView.java diff --git a/src/main/java/subway/Views/InputView.java b/src/main/java/subway/Views/InputView.java new file mode 100644 index 000000000..44acdf0dd --- /dev/null +++ b/src/main/java/subway/Views/InputView.java @@ -0,0 +1,24 @@ +package subway.Views; + +import java.util.Scanner; + +public class InputView { + private final static String FUNCTIONSELECTION = "## 원하는 기능을 선택하세요."; + private final static String STARTSTATION = "## 출발역을 입력하세요."; + private final static String ENDSTATION = "## 도착역을 입력하세요."; + + protected static String getUserInput(Scanner scanner) { + System.out.println(FUNCTIONSELECTION); + return scanner.nextLine(); + } + + protected static String getStartStation(Scanner scanner) { + System.out.println(STARTSTATION); + return scanner.nextLine(); + } + + protected static String getEndStation(Scanner scanner) { + System.out.println(ENDSTATION); + return scanner.nextLine(); + } +} From 19002294ad60be8c61c80cf920f0d1f8c18882c8 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 15:55:57 +0900 Subject: [PATCH 07/25] =?UTF-8?q?feat:=20=EC=9E=85=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EC=8B=A4=ED=96=89=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EB=A9=94=EC=9D=B8=20=ED=99=94=EB=A9=B4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Views/MainView.java | 83 ++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/main/java/subway/Views/MainView.java diff --git a/src/main/java/subway/Views/MainView.java b/src/main/java/subway/Views/MainView.java new file mode 100644 index 000000000..d831c953d --- /dev/null +++ b/src/main/java/subway/Views/MainView.java @@ -0,0 +1,83 @@ +package subway.Views; + +import java.util.Arrays; +import java.util.InputMismatchException; +import java.util.List; +import java.util.Scanner; +import subway.Controller.SubwayRouteSearcher; +import subway.utils.ErrorValidator; + +public class MainView { + + private final static List MAINSELECTLIST = Arrays.asList("1", "Q"); + private final static List ROUTESELECTLIST = Arrays.asList("1", "2", "B"); + + public static void printMainScreen(Scanner scanner) { + OutputView.printMainSelection(); + String userMainSelection = InputView.getUserInput(scanner); + System.out.println(); + checkUserInput(scanner, userMainSelection, MAINSELECTLIST); + SubwayRouteSearcher.selectMain(scanner, userMainSelection); + } + + public static void printRouteScreen(Scanner scanner) { + OutputView.printRouteSelection(); + String userRouteSelection = InputView.getUserInput(scanner); + System.out.println(); + checkUserInput(scanner, userRouteSelection, ROUTESELECTLIST); + SubwayRouteSearcher.selectRoute(scanner, userRouteSelection); + } + + + private static void checkUserInput(Scanner scanner, String userSelection, + List SELECTLIST) { + try { + ErrorValidator.checkMainSelection(SELECTLIST, userSelection); + } catch (InputMismatchException e) { + System.out.println(e.getMessage()); + printMainScreen(scanner); + } + } + + public static String printStartStation(Scanner scanner) { + String startStaion = InputView.getStartStation(scanner); + System.out.println(); + checkStartStation(scanner, startStaion); + return startStaion; + } + + public static String printEndStation(Scanner scanner, String startStation) { + String endStaion = InputView.getEndStation(scanner); + System.out.println(); + checkEndStation(scanner, endStaion); + checkStartEndStation(scanner, startStation, endStaion); + return endStaion; + } + + private static void checkStartEndStation(Scanner scanner, String startStation, String endStaion) { + try { + ErrorValidator.checkStartEndStation(startStation, endStaion); + } catch (InputMismatchException e) { + System.out.println(e.getMessage()); + printMainScreen(scanner); + } + } + + private static void checkStartStation(Scanner scanner, String startStaion) { + try { + ErrorValidator.checkStationRepository(startStaion); + } catch (InputMismatchException e) { + System.out.println(e.getMessage()); + printMainScreen(scanner); + } + } + + private static void checkEndStation(Scanner scanner, String endStaion) { + try { + ErrorValidator.checkStationRepository(endStaion); + } catch (InputMismatchException e) { + System.out.println(e.getMessage()); + printMainScreen(scanner); + } + } +} From 5998efebbdfc91a309651c870896bb3f6fc9c872 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 15:56:55 +0900 Subject: [PATCH 08/25] =?UTF-8?q?refactor:=20=EC=B6=9C=EB=B0=9C=EC=97=AD?= =?UTF-8?q?=EA=B3=BC=20=EB=8F=84=EC=B0=A9=EC=97=AD=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EA=B2=80=EC=82=AC=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/utils/ErrorValidator.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/subway/utils/ErrorValidator.java b/src/main/java/subway/utils/ErrorValidator.java index 3d79f403f..1f6afc147 100644 --- a/src/main/java/subway/utils/ErrorValidator.java +++ b/src/main/java/subway/utils/ErrorValidator.java @@ -2,14 +2,29 @@ import java.util.InputMismatchException; import java.util.List; +import subway.domain.StationRepository; public class ErrorValidator { private final static String ERRORMESSAGE = "[ERROR] "; private final static String WRONGUSERINPUT = "잘못된 입력입니다."; + private final static String WRONGSTATIONNAME = "존재하지 않는 역 이름입니다."; + private final static String SAMESTATIONNAME = "출발역과 도착역이 동일합니다."; public static void checkMainSelection(List MAINSELECTLIST, String userSelection){ if (!MAINSELECTLIST.contains(userSelection)) { throw new InputMismatchException(ERRORMESSAGE + WRONGUSERINPUT); } } + + public static void checkStationRepository(String stationName) { + if (!StationRepository.checkStation(stationName)) { + throw new InputMismatchException(ERRORMESSAGE + WRONGSTATIONNAME); + } + } + + public static void checkStartEndStation(String startStation, String endStaion) { + if (startStation.equals(endStaion)) { + throw new InputMismatchException(ERRORMESSAGE + SAMESTATIONNAME); + } + } } From de9f2d17ce41a9014f1c22a8862c53aeab9700ae Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 15:57:33 +0900 Subject: [PATCH 09/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=A8=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EB=B0=8F=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/SubwayRouteSearcher.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/subway/Controller/SubwayRouteSearcher.java diff --git a/src/main/java/subway/Controller/SubwayRouteSearcher.java b/src/main/java/subway/Controller/SubwayRouteSearcher.java new file mode 100644 index 000000000..99621979a --- /dev/null +++ b/src/main/java/subway/Controller/SubwayRouteSearcher.java @@ -0,0 +1,28 @@ +package subway.Controller; + +import java.util.Scanner; +import subway.Views.MainView; + +public class SubwayRouteSearcher { + + public static void startProgram(Scanner scanner) { + Initializer.initializeBaseSetting(); + MainView.printMainScreen(scanner); + } + + public static void selectMain(Scanner scanner, String userMainSelection) { + if (userMainSelection.equals("1")) { + MainView.printRouteScreen(scanner); + } + } + + public static void selectRoute(Scanner scanner, String userRouteSelection) { + if (userRouteSelection.equals("1")) { + MinDistanceCalculator.calculateMinDistance(scanner); + } + if (userRouteSelection.equals("2")) { + MinTimeCalculator.calculateMinTimeDistance(scanner); + } + MainView.printMainScreen(scanner); + } +} \ No newline at end of file From bae9256c869210334788dfb1f87703120675158e Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 15:58:31 +0900 Subject: [PATCH 10/25] =?UTF-8?q?refactor:=20=EC=9D=B4=EB=A6=84=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=97=AD=20=EC=A1=B4=EC=9E=AC=EB=A5=BC=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/StationRepository.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 8ed9d103f..0efedf55e 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -23,4 +23,13 @@ public static boolean deleteStation(String name) { public static void deleteAll() { stations.clear(); } + + public static boolean checkStation(String stationName) { + for (Station station : stations) { + if (station.getName().equals(stationName)) { + return true; + } + } + return false; + } } From a7983592114151548551f10c57a1a1b2e97f2537 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 16:51:17 +0900 Subject: [PATCH 11/25] =?UTF-8?q?styles:=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Controller/Initializer.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/subway/Controller/Initializer.java b/src/main/java/subway/Controller/Initializer.java index 18428bb00..c2fd61f4c 100644 --- a/src/main/java/subway/Controller/Initializer.java +++ b/src/main/java/subway/Controller/Initializer.java @@ -13,24 +13,30 @@ public class Initializer { .asList("교대역", "강남역", "역삼역", "남부터미널역", "양재역", "양재시민의숲역", "매봉역"); private static List INITIALLINE = Arrays.asList("2호선", "3호선", "신분당선"); private static List LINETWO = Arrays.asList("교대역", "강남역", "역삼역"); + private static List LINETWOTIME = Arrays.asList(2, 3); + private static List LINETWODISTANCE = Arrays.asList(3, 3); private static List LINETHREE = Arrays.asList("교대역", "남부터미널역", "양재역", "매봉역"); + private static List LINETHREETIME = Arrays.asList(3, 6, 1); + private static List LINETHREEDISTANCE = Arrays.asList(2, 5, 1); private static List LINESHINBUNDANG = Arrays.asList("강남역", "양재역", "양재시민의숲역"); + private static List LINESHINBUNDANGTIME = Arrays.asList(2, 10); + private static List LINESHINBUNDANGDISTANCE = Arrays.asList(8, 3); private static List> INITIALLINESTATION = Arrays .asList(LINETWO, LINETHREE, LINESHINBUNDANG); - public static void initializeBaseSetting() { - initializeLine(INITIALLINE); - initializeStation(INITIALSTATION); + public static void setInitializeBaseSetting() { + setInitializeLine(INITIALLINE); + setInitializeStation(INITIALSTATION); } - private static void initializeStation(List INITIALSTATION) { + private static void setInitializeStation(List INITIALSTATION) { for (String stationName : INITIALSTATION) { Station station = new Station(stationName); StationRepository.addStation(station); } } - private static void initializeLine(List INITIALLINE) { + private static void setInitializeLine(List INITIALLINE) { for (int i = 0; i < INITIALLINE.size(); i++) { Line line = new Line(INITIALLINE.get(i)); line.addLineStation(INITIALLINESTATION.get(i)); From bb6104f8ceef9a9c2d9af33869ff2afc5ca9160f Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:53:13 +0900 Subject: [PATCH 12/25] =?UTF-8?q?refactor:=20=EC=97=AD=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=EC=9D=84=20=EB=85=B8=EC=84=A0=EC=97=90=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Line.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index f4d738d5a..4c5db2424 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -1,7 +1,12 @@ package subway.domain; +import java.util.ArrayList; +import java.util.List; + public class Line { + private String name; + private List lineStations = new ArrayList<>(); public Line(String name) { this.name = name; @@ -11,5 +16,10 @@ public String getName() { return name; } - // 추가 기능 구현 + public void addLineStation(List stationNames) { + for (String stationName : stationNames) { + Station station = new Station(stationName); + lineStations.add(station); + } + } } From f2be63020f0586f5520e3fad4cf3e8b1c0dc933c Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:53:46 +0900 Subject: [PATCH 13/25] =?UTF-8?q?styles:=20Convention=EC=97=90=20=EB=A7=9E?= =?UTF-8?q?=EA=B2=8C=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/LineRepository.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 2c4a723c9..17753c602 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -6,6 +6,7 @@ import java.util.Objects; public class LineRepository { + private static final List lines = new ArrayList<>(); public static List lines() { From 74e928677c95bc699f53faea988e591dfff0677f Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:54:14 +0900 Subject: [PATCH 14/25] =?UTF-8?q?styles:=20Convention=EC=97=90=20=EB=A7=9E?= =?UTF-8?q?=EA=B2=8C=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Station.java | 3 +-- src/main/java/subway/domain/StationRepository.java | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/domain/Station.java b/src/main/java/subway/domain/Station.java index bdb142590..d9ea09d2c 100644 --- a/src/main/java/subway/domain/Station.java +++ b/src/main/java/subway/domain/Station.java @@ -1,6 +1,7 @@ package subway.domain; public class Station { + private String name; public Station(String name) { @@ -10,6 +11,4 @@ public Station(String name) { public String getName() { return name; } - - // 추가 기능 구현 } diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 0efedf55e..d3a7b6617 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -6,6 +6,7 @@ import java.util.Objects; public class StationRepository { + private static final List stations = new ArrayList<>(); public static List stations() { From 85c2b247dc9c86d8e18b283ee27928877c69d21f Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:54:42 +0900 Subject: [PATCH 15/25] =?UTF-8?q?feat:=20=EA=B1=B0=EB=A6=AC=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=EC=86=8D=EB=8F=84=20=EA=B3=84=EC=82=B0=20Repository?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/DistanceWeightRepository.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/subway/domain/DistanceWeightRepository.java diff --git a/src/main/java/subway/domain/DistanceWeightRepository.java b/src/main/java/subway/domain/DistanceWeightRepository.java new file mode 100644 index 000000000..272fa0838 --- /dev/null +++ b/src/main/java/subway/domain/DistanceWeightRepository.java @@ -0,0 +1,28 @@ +package subway.domain; + +import org.jgrapht.alg.shortestpath.DijkstraShortestPath; +import org.jgrapht.graph.DefaultWeightedEdge; +import org.jgrapht.graph.WeightedMultigraph; + +import java.util.List; + +public class DistanceWeightRepository { + + private static WeightedMultigraph distanceGraph = new WeightedMultigraph( + DefaultWeightedEdge.class); + + public static void addStation(String station) { + distanceGraph.addVertex(station); + } + + public static void setStationEdgeDistance(String startStation, String endStation, + int distance) { + distanceGraph.setEdgeWeight(distanceGraph.addEdge(startStation, endStation), distance); + } + + + public static List getDijkstraShortestPath(String startStation, String endStation) { + DijkstraShortestPath dijkstraShortestPath = new DijkstraShortestPath(distanceGraph); + return dijkstraShortestPath.getPath(startStation, endStation).getVertexList(); + } +} From 4b00bfbe84d0c57a3fc47c3d2d3b0e793288ed04 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:54:51 +0900 Subject: [PATCH 16/25] =?UTF-8?q?feat:=20=EC=8B=9C=EA=B0=84=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=EC=86=8D=EB=8F=84=20=EA=B3=84=EC=82=B0=20Repository?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subway/domain/TimeWeightRepository.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/subway/domain/TimeWeightRepository.java diff --git a/src/main/java/subway/domain/TimeWeightRepository.java b/src/main/java/subway/domain/TimeWeightRepository.java new file mode 100644 index 000000000..92deef6f8 --- /dev/null +++ b/src/main/java/subway/domain/TimeWeightRepository.java @@ -0,0 +1,27 @@ +package subway.domain; + +import org.jgrapht.alg.shortestpath.DijkstraShortestPath; +import org.jgrapht.graph.DefaultWeightedEdge; +import org.jgrapht.graph.WeightedMultigraph; + +import java.util.List; + +public class TimeWeightRepository { + + private static WeightedMultigraph timeGraph = new WeightedMultigraph( + DefaultWeightedEdge.class); + + public static void addStation(String station) { + timeGraph.addVertex(station); + } + + public static void setStationEdgeTime(String startStation, String endStation, int time) { + timeGraph.setEdgeWeight(timeGraph.addEdge(startStation, endStation), time); + + } + + public static List getDijkstraShortestPath(String startStation, String endStation) { + DijkstraShortestPath dijkstraShortestPath = new DijkstraShortestPath(timeGraph); + return dijkstraShortestPath.getPath(startStation, endStation).getVertexList(); + } +} From 4f21635014dc8bfef332438ddf2111a6fd39ed48 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:55:24 +0900 Subject: [PATCH 17/25] =?UTF-8?q?feat:=20=EC=B5=9C=EB=8B=A8=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=EA=B2=BD=EB=A1=9C=20=EA=B3=84=EC=82=B0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subway/Controller/MinTimeCalculator.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/subway/Controller/MinTimeCalculator.java diff --git a/src/main/java/subway/Controller/MinTimeCalculator.java b/src/main/java/subway/Controller/MinTimeCalculator.java new file mode 100644 index 000000000..180ce407f --- /dev/null +++ b/src/main/java/subway/Controller/MinTimeCalculator.java @@ -0,0 +1,18 @@ +package subway.Controller; + +import java.util.List; +import java.util.Scanner; +import subway.Views.MainView; +import subway.Views.OutputView; +import subway.domain.DistanceWeightRepository; + +public class MinTimeCalculator { + + public static void calculateMinTime(Scanner scanner) { + String startStation = MainView.printStartStation(scanner); + String endStation = MainView.printEndStation(scanner, startStation); + List result = + DistanceWeightRepository.getDijkstraShortestPath(startStation, endStation); + MainView.printResultScreen(scanner, result); + } +} From 648dca58a5dfd25edaeb365f888cd02ec5c0273c Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:55:34 +0900 Subject: [PATCH 18/25] =?UTF-8?q?feat:=20=EC=B5=9C=EB=8B=A8=20=EA=B1=B0?= =?UTF-8?q?=EB=A6=AC=20=EA=B2=BD=EB=A1=9C=20=EA=B3=84=EC=82=B0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/MinDistanceCalculator.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/subway/Controller/MinDistanceCalculator.java diff --git a/src/main/java/subway/Controller/MinDistanceCalculator.java b/src/main/java/subway/Controller/MinDistanceCalculator.java new file mode 100644 index 000000000..c0e3a9b6f --- /dev/null +++ b/src/main/java/subway/Controller/MinDistanceCalculator.java @@ -0,0 +1,21 @@ +package subway.Controller; + +import java.util.List; +import java.util.Scanner; +import org.jgrapht.graph.DefaultWeightedEdge; +import org.jgrapht.graph.WeightedMultigraph; +import subway.Views.MainView; +import subway.Views.OutputView; +import subway.domain.DistanceWeightRepository; + +public class MinDistanceCalculator { + + public static void calculateMinDistance(Scanner scanner) { + String startStation = MainView.printStartStation(scanner); + String endStation = MainView.printEndStation(scanner, startStation); + + List result = DistanceWeightRepository + .getDijkstraShortestPath(startStation, endStation); + MainView.printResultScreen(scanner, result); + } +} From e51f58ffbaf3a26ccce10b56d2449f52a4eb4972 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:55:56 +0900 Subject: [PATCH 19/25] =?UTF-8?q?feat:=20=EC=9E=85=EB=A0=A5=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Views/InputView.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/subway/Views/InputView.java b/src/main/java/subway/Views/InputView.java index 44acdf0dd..58a301d5a 100644 --- a/src/main/java/subway/Views/InputView.java +++ b/src/main/java/subway/Views/InputView.java @@ -3,6 +3,7 @@ import java.util.Scanner; public class InputView { + private final static String FUNCTIONSELECTION = "## 원하는 기능을 선택하세요."; private final static String STARTSTATION = "## 출발역을 입력하세요."; private final static String ENDSTATION = "## 도착역을 입력하세요."; From fc73a53d593fa4a0f6eff0310043ed49b55b7822 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:56:16 +0900 Subject: [PATCH 20/25] =?UTF-8?q?feat:=20=EC=B6=9C=EB=A0=A5=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Views/OutputView.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/Views/OutputView.java b/src/main/java/subway/Views/OutputView.java index 70be2dfac..6499743f5 100644 --- a/src/main/java/subway/Views/OutputView.java +++ b/src/main/java/subway/Views/OutputView.java @@ -1,15 +1,23 @@ package subway.Views; +import java.util.List; +import java.util.Scanner; + public class OutputView { private final static String MAINSCREEN = "## 메인 화면"; private final static String ROUTESEARCHSELECTION = "1. 경로 조회"; private final static String PROGRAMEXIT = "Q. 종료"; - private final static String ROUTESCREEN = "## 경로 기준"; private final static String MINDISTANCEROUTE = "1. 최단 거리"; private final static String MINTIMEROUTE = "2. 최소 시간"; private final static String BACKOPTION = "B. 돌아가기"; + private final static String RESULTSCREEN = "## 조회 결과"; + private final static String INFORMATION = "[INFO] "; + private final static String SPLITLINE = "---"; + private final static String TOTALDISTANCE = "총 거리: %dkm"; + private final static String TOTALTIME = "총 소요 시간: %d분"; + protected static void printMainSelection() { System.out.println(MAINSCREEN); @@ -25,4 +33,15 @@ protected static void printRouteSelection() { System.out.println(BACKOPTION); System.out.println(); } + + protected static void printResultRoute(List resultList) { + System.out.println(RESULTSCREEN); + System.out.println(INFORMATION + SPLITLINE); +// System.out.println(String.format(INFORMATION + TOTALDISTANCE, totalDistance)); +// System.out.println(String.format(INFORMATION + TOTALTIME, totalTime)); +// System.out.println(INFORMATION + SPLITLINE); + for (String result : resultList) { + System.out.println(INFORMATION + result); + } + } } From 13057aecf04fe6a2100159e9f051a1b100060e6a Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:56:38 +0900 Subject: [PATCH 21/25] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Views/MainView.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/Views/MainView.java b/src/main/java/subway/Views/MainView.java index d831c953d..d70e345c9 100644 --- a/src/main/java/subway/Views/MainView.java +++ b/src/main/java/subway/Views/MainView.java @@ -28,6 +28,12 @@ public static void printRouteScreen(Scanner scanner) { SubwayRouteSearcher.selectRoute(scanner, userRouteSelection); } + public static void printResultScreen(Scanner scanner, List resultList) { + OutputView.printResultRoute(resultList); + System.out.println(); + MainView.printMainScreen(scanner); + } + private static void checkUserInput(Scanner scanner, String userSelection, List SELECTLIST) { @@ -35,6 +41,7 @@ private static void checkUserInput(Scanner scanner, String userSelection, ErrorValidator.checkMainSelection(SELECTLIST, userSelection); } catch (InputMismatchException e) { System.out.println(e.getMessage()); + System.out.println(); printMainScreen(scanner); } } @@ -54,11 +61,13 @@ public static String printEndStation(Scanner scanner, String startStation) { return endStaion; } - private static void checkStartEndStation(Scanner scanner, String startStation, String endStaion) { + private static void checkStartEndStation(Scanner scanner, String startStation, + String endStaion) { try { ErrorValidator.checkStartEndStation(startStation, endStaion); } catch (InputMismatchException e) { System.out.println(e.getMessage()); + System.out.println(); printMainScreen(scanner); } } @@ -68,6 +77,7 @@ private static void checkStartStation(Scanner scanner, String startStaion) { ErrorValidator.checkStationRepository(startStaion); } catch (InputMismatchException e) { System.out.println(e.getMessage()); + System.out.println(); printMainScreen(scanner); } } @@ -77,6 +87,7 @@ private static void checkEndStation(Scanner scanner, String endStaion) { ErrorValidator.checkStationRepository(endStaion); } catch (InputMismatchException e) { System.out.println(e.getMessage()); + System.out.println(); printMainScreen(scanner); } } From 2f41ac82ffb2b3e3198c153c738eb40742793932 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:57:45 +0900 Subject: [PATCH 22/25] =?UTF-8?q?refactor:=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EA=B2=80=EC=82=AC=20=EA=B8=B0=EB=8A=A5=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/utils/ErrorValidator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/utils/ErrorValidator.java b/src/main/java/subway/utils/ErrorValidator.java index 1f6afc147..fe9e49fb0 100644 --- a/src/main/java/subway/utils/ErrorValidator.java +++ b/src/main/java/subway/utils/ErrorValidator.java @@ -5,12 +5,13 @@ import subway.domain.StationRepository; public class ErrorValidator { + private final static String ERRORMESSAGE = "[ERROR] "; private final static String WRONGUSERINPUT = "잘못된 입력입니다."; private final static String WRONGSTATIONNAME = "존재하지 않는 역 이름입니다."; private final static String SAMESTATIONNAME = "출발역과 도착역이 동일합니다."; - public static void checkMainSelection(List MAINSELECTLIST, String userSelection){ + public static void checkMainSelection(List MAINSELECTLIST, String userSelection) { if (!MAINSELECTLIST.contains(userSelection)) { throw new InputMismatchException(ERRORMESSAGE + WRONGUSERINPUT); } From b81fdeb9025db8bee298c400f8a6ff153bfc1265 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:58:04 +0900 Subject: [PATCH 23/25] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Controller/SubwayRouteSearcher.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/Controller/SubwayRouteSearcher.java b/src/main/java/subway/Controller/SubwayRouteSearcher.java index 99621979a..be67effab 100644 --- a/src/main/java/subway/Controller/SubwayRouteSearcher.java +++ b/src/main/java/subway/Controller/SubwayRouteSearcher.java @@ -6,7 +6,7 @@ public class SubwayRouteSearcher { public static void startProgram(Scanner scanner) { - Initializer.initializeBaseSetting(); + Initializer.setInitializeBaseSetting(); MainView.printMainScreen(scanner); } @@ -21,8 +21,10 @@ public static void selectRoute(Scanner scanner, String userRouteSelection) { MinDistanceCalculator.calculateMinDistance(scanner); } if (userRouteSelection.equals("2")) { - MinTimeCalculator.calculateMinTimeDistance(scanner); + MinTimeCalculator.calculateMinTime(scanner); + } + if (userRouteSelection.equals("B")) { + MainView.printMainScreen(scanner); } - MainView.printMainScreen(scanner); } } \ No newline at end of file From 1858dbe65be79bfba91ae1c6f22f2f762af8b358 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:58:24 +0900 Subject: [PATCH 24/25] =?UTF-8?q?feat:=20=EC=B4=88=EA=B8=B0=ED=99=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 3 ++ .../java/subway/Controller/Initializer.java | 36 +++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 0bcf786cc..34b26e870 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,10 +1,13 @@ package subway; import java.util.Scanner; +import subway.Controller.SubwayRouteSearcher; public class Application { + public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); // TODO: 프로그램 구현 + SubwayRouteSearcher.startProgram(scanner); } } diff --git a/src/main/java/subway/Controller/Initializer.java b/src/main/java/subway/Controller/Initializer.java index c2fd61f4c..3e71a5689 100644 --- a/src/main/java/subway/Controller/Initializer.java +++ b/src/main/java/subway/Controller/Initializer.java @@ -2,10 +2,12 @@ import java.util.Arrays; import java.util.List; +import subway.domain.DistanceWeightRepository; import subway.domain.Line; import subway.domain.LineRepository; import subway.domain.Station; import subway.domain.StationRepository; +import subway.domain.TimeWeightRepository; public class Initializer { @@ -13,20 +15,24 @@ public class Initializer { .asList("교대역", "강남역", "역삼역", "남부터미널역", "양재역", "양재시민의숲역", "매봉역"); private static List INITIALLINE = Arrays.asList("2호선", "3호선", "신분당선"); private static List LINETWO = Arrays.asList("교대역", "강남역", "역삼역"); - private static List LINETWOTIME = Arrays.asList(2, 3); - private static List LINETWODISTANCE = Arrays.asList(3, 3); + private static int[] LINETWOTIME = {2, 3}; + private static int[] LINETWODISTANCE = {3, 3}; private static List LINETHREE = Arrays.asList("교대역", "남부터미널역", "양재역", "매봉역"); - private static List LINETHREETIME = Arrays.asList(3, 6, 1); - private static List LINETHREEDISTANCE = Arrays.asList(2, 5, 1); + private static int[] LINETHREETIME = {3, 6, 1}; + private static int[] LINETHREEDISTANCE = {2, 5, 1}; private static List LINESHINBUNDANG = Arrays.asList("강남역", "양재역", "양재시민의숲역"); - private static List LINESHINBUNDANGTIME = Arrays.asList(2, 10); - private static List LINESHINBUNDANGDISTANCE = Arrays.asList(8, 3); + private static int[] LINESHINBUNDANGTIME = {2, 10}; + private static int[] LINESHINBUNDANGDISTANCE = {8, 3}; private static List> INITIALLINESTATION = Arrays .asList(LINETWO, LINETHREE, LINESHINBUNDANG); public static void setInitializeBaseSetting() { setInitializeLine(INITIALLINE); setInitializeStation(INITIALSTATION); + setInitialVertex(INITIALSTATION); + setInitialWeight(LINETWO, LINETWOTIME, LINETWODISTANCE); + setInitialWeight(LINETHREE, LINETHREETIME, LINETHREEDISTANCE); + setInitialWeight(LINESHINBUNDANG, LINESHINBUNDANGTIME, LINESHINBUNDANGDISTANCE); } private static void setInitializeStation(List INITIALSTATION) { @@ -43,4 +49,22 @@ private static void setInitializeLine(List INITIALLINE) { LineRepository.addLine(line); } } + + private static void setInitialVertex(List stationNames) { + for (String stationName : stationNames) { + TimeWeightRepository.addStation(stationName); + DistanceWeightRepository.addStation(stationName); + } + } + + private static void setInitialWeight(List lineNumber, int[] timeWeight, + int[] distanceWeight) { + for (int i = 0; i < lineNumber.size() - 1; i++) { + TimeWeightRepository + .setStationEdgeTime(lineNumber.get(i), lineNumber.get(i + 1), timeWeight[i]); + DistanceWeightRepository + .setStationEdgeDistance(lineNumber.get(i), lineNumber.get(i + 1), + distanceWeight[i]); + } + } } From 401cc242013190235417a2eb894f3cbbd1a74168 Mon Sep 17 00:00:00 2001 From: Jay Seungjin Baek Date: Sat, 19 Dec 2020 17:58:48 +0900 Subject: [PATCH 25/25] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=B2=B4=ED=81=AC=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/README.md b/docs/README.md index 31549b237..6e86ed79a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,35 +22,35 @@ ### 기능 구현 목록 -1. [ ] 프로그램 시작 시 주어진 역, 노선, 구간 정보로 초기 설정을 한다. +1. [x] 프로그램 시작 시 주어진 역, 노선, 구간 정보로 초기 설정을 한다. -1. [ ] 시작 화면을 출력 클래스에 구현한다. +1. [x] 시작 화면을 출력 클래스에 구현한다. -1. [ ] 원하는 기능을 선택하는 화면을 구현한다. +1. [x] 원하는 기능을 선택하는 화면을 구현한다. - [예외사항] 사용자 입력이 주어진 선택지가 아닌 값으로 입력된다.(공백 포함) -1. [ ] 경로 기준을 선택하는 화면을 구현한다. +1. [X] 경로 기준을 선택하는 화면을 구현한다. -1. [ ] 출발역을 입력받는 화면을 구현한다. +1. [x] 출발역을 입력받는 화면을 구현한다. - [예외사항] 출발역이 역 목록에 존재하지 않는다. -1. [ ] 도착역을 입력받는 화면을 구현한다. +1. [x] 도착역을 입력받는 화면을 구현한다. - [예외사항] 도착역이 역 목록에 존재하지 않는다. - [예외사항] 도착역이 입력받은 출발역과 같다. -1. [ ] 조회 결과를 출력하는 화면을 구현한다. +1. [x] 조회 결과를 출력하는 화면을 구현한다. -1. [ ] 거리를 기준으로 최단거리 경로를 연산하는 클래스를 구현한다. +1. [x] 거리를 기준으로 최단거리 경로를 연산하는 클래스를 구현한다. -1. [ ] 시간을 기준으로 최단시간 경로를 연산하는 클래스를 구현한다. +1. [x] 시간을 기준으로 최단시간 경로를 연산하는 클래스를 구현한다.