From fdc094b15f2780fd8e01a8a91b934d08e46de7ab Mon Sep 17 00:00:00 2001 From: piamin04 Date: Fri, 14 Feb 2025 16:35:54 +0900 Subject: [PATCH 1/4] =?UTF-8?q?docs(README):=20=EB=A6=AC=EB=93=9C=EB=AF=B8?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1=20=EA=B5=AC=ED=98=84=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EB=AA=A9=EB=A1=9D=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 +++++++++++++ src/main/java/racingcar/Application.java | 14 +++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d0286c8..8ed4359 100644 --- a/README.md +++ b/README.md @@ -1 +1,14 @@ # java-racingcar-precourse +1. 자동차 이름 정하고 생성하는 함수(이름은 쉼표 기준으로 구분) +입력 : pobi,woni,jun + +2. 쉼표로 문자열 나누기 + +3. 시도할 횟수 받기 +만약 횟수가 0이하이면 오류 + +4. 경주 하기 +자동차의 수가 4이상이면 -출력하고 자동차가 얼마나 움직이는지를 저장하는 int형 변수에 +1하기 +반환 : 1등 자동차 이름 + +5. 결과 출력 \ No newline at end of file diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..397182c 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,19 @@ package racingcar; +import camp.nextstep.edu.missionutils.Randoms; +import camp.nextstep.edu.missionutils.Console; + +import java.util.ArrayList; + public class Application { + public class Car{ + public static String cut(String input){ + ArrayList carlist = new ArrayList<>(); + } + } public static void main(String[] args) { - // TODO: 프로그램 구현 + String input = Console.readLine(); + + } } From 64b9a40f0e9d699326e04d32061c7c192257ac7d Mon Sep 17 00:00:00 2001 From: piamin04 Date: Fri, 14 Feb 2025 17:00:53 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat(feature)=20:=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1=20=EC=9E=90=EB=8F=99=EC=B0=A8=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EA=B2=80=EC=88=98=20=EB=B0=8F=20=EC=89=BC=ED=91=9C?= =?UTF-8?q?=EB=A5=BC=20=EA=B8=B0=EC=A4=80=EC=9C=BC=EB=A1=9C=20=EB=82=98?= =?UTF-8?q?=EB=88=84=EB=8A=94=20=ED=95=A8=EC=88=98=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 31 +++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 397182c..4596b80 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -4,16 +4,41 @@ import camp.nextstep.edu.missionutils.Console; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class Application { - public class Car{ - public static String cut(String input){ - ArrayList carlist = new ArrayList<>(); + public static class Car{ + //1. 자동차 이름을 검수하고 쉼표를 기준으로 나누는 함수 + public static List cut(String input){ + if (input == null || input.trim().isEmpty()) { + throw new IllegalArgumentException("error"); + } + + List carList = new ArrayList<>(Arrays.asList(input.split(","))); + + for (String carName : carList) { + carName = carName.trim(); // 공백 제거 + if (carName.isEmpty()) { + throw new IllegalArgumentException("error"); + } + if (carName.length() > 5) { + throw new IllegalArgumentException("error"); + } + } + return carList; } + } + public static void main(String[] args) { + System.out.println("Input String: "); String input = Console.readLine(); + //자동차 생성 및 이름 리스트로 저장 + List carNames = Car.cut(input); + // 테스트 출력 + System.out.println(carNames); } } From bbc0021ae74511165560b817bcd9a56054427e72 Mon Sep 17 00:00:00 2001 From: piamin04 Date: Fri, 14 Feb 2025 17:08:40 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat(feature)=20:=20=EB=A6=AC=EB=93=9C?= =?UTF-8?q?=EB=AF=B8=EC=9D=98=203=EB=B2=88=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EC=8B=9C=EB=8F=84=ED=95=A0=20=ED=9A=9F=EC=88=98=20?= =?UTF-8?q?=EB=B0=9B=EA=B8=B0=20=EB=A7=8C=EC=95=BD=20=ED=9A=9F=EC=88=98?= =?UTF-8?q?=EA=B0=80=200=EC=9D=B4=ED=95=98=EC=9D=B4=EB=A9=B4=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 4596b80..aa0e646 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -38,7 +38,11 @@ public static void main(String[] args) { //자동차 생성 및 이름 리스트로 저장 List carNames = Car.cut(input); - // 테스트 출력 - System.out.println(carNames); + //시도할 횟수 받기 + int number = Integer.parseInt(Console.readLine()); + if(number<1){ //횟수가 0이거나 음수일 수 없음 + throw new IllegalArgumentException("error"); + } + } } From b1c2c31eaf450b9946ca3e5f46919ded1dd39195 Mon Sep 17 00:00:00 2001 From: piamin04 Date: Fri, 14 Feb 2025 18:24:56 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat(feature)=20:=20=EB=A6=AC=EB=93=9C?= =?UTF-8?q?=EB=AF=B8=EC=9D=98=204,5=EB=B2=88=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 56 ++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index aa0e646..3dfc0a8 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -28,21 +28,71 @@ public static List cut(String input){ } return carList; } + } + + public static class Play { + // 자동차 이동 여부 결정 + public static boolean isMovable() { + return Randoms.pickNumberInRange(0, 9) >= 4; + } + + // 이동 거리 출력 + public static String getDistanceString(int distance) { + return "-".repeat(distance); + } + // 자동차 이동 및 출력 + public static void print(List carList, int[] carDistances) { + for (int i = 0; i < carList.size(); i++) { + if (isMovable()) { + carDistances[i]++; + } + + System.out.println(carList.get(i) + " : " + getDistanceString(carDistances[i])); + } + System.out.println(); + } } + public static void printWinners(List carNames, int[] carDistances) { + int maxDistance = Arrays.stream(carDistances).max().orElse(0); + List winners = new ArrayList<>(); + + for (int i = 0; i < carNames.size(); i++) { + if (carDistances[i] == maxDistance) { + winners.add(carNames.get(i)); + } + } + + // 우승자 출력 + System.out.println("final winner : " + String.join(", ", winners)); + } + + public static void main(String[] args) { System.out.println("Input String: "); String input = Console.readLine(); - //자동차 생성 및 이름 리스트로 저장 + //자동차 생성 및 이름 리스트로 저장 및 배열 크기 구하기 List carNames = Car.cut(input); + int carNamesSize = carNames.size(); //시도할 횟수 받기 - int number = Integer.parseInt(Console.readLine()); - if(number<1){ //횟수가 0이거나 음수일 수 없음 + System.out.println("Input number of times: "); + int tryNumber = Integer.parseInt(Console.readLine()); + if(tryNumber<1){ //횟수가 0이거나 음수일 수 없음 throw new IllegalArgumentException("error"); } + //자동차가 움직이는 횟수 저장하는 int형 배열 생성 + int[] carDistances = new int[carNamesSize]; + + //경주하기 + for (int i = 0; i < tryNumber; i++) { + Play.print(carNames, carDistances); + } + + //우승자 출력 + printWinners(carNames, carDistances); } }