From 738426fef5151fb98b2830740bf025bd06e9f2b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Mon, 30 Mar 2026 23:36:11 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 111 ++++++++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..5b8dc45 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,114 @@ package racingcar; +import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; + +class Car { + String name; + int count = 0; + public void move() { + if (Randoms.pickNumberInRange(0, 9) >= 4) { + count++; + } + } +} + + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String temp_name = Console.readLine(); + + String[] cars = temp_name.split(","); + + for (int i = 0; i < cars.length; i++) { + String name = cars[i]; + + // 빈 값 검증 + if (name.isEmpty()) { + throw new IllegalArgumentException("이름은 빈 값일 수 없습니다."); + } + // 5자 초과 검증 + if (name.length() > 5) { + throw new IllegalArgumentException("이름은 5자 이하만 가능합니다."); + } + // 공백 포함 검증 + if (name.contains(" ")) { + throw new IllegalArgumentException("이름에 공백이 포함될 수 없습니다."); + } + } + + for (int i = 0; i < cars.length; i++) { + for (int j = i + 1; j < cars.length; j++) { + if (cars[i].equals(cars[j])) { + throw new IllegalArgumentException("중복된 이름이 있습니다."); + } + } + } + + + + int carCount = cars.length; + Car[] car = new Car[carCount]; + for (int i = 0; i < carCount; i++) { + car[i] = new Car(); + car[i].name = cars[i]; + } + + System.out.println("시도할 회수는 몇회인가요?"); + String countInput = Console.readLine(); + int count = Integer.parseInt(countInput); + + try { + count = Integer.parseInt(countInput); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("시도 횟수는 숫자여야 합니다."); + } + + if (count <= 0) { + throw new IllegalArgumentException("시도 횟수는 1 이상이어야 합니다."); + } + + System.out.println(); + System.out.println("실행 결과"); + + for (int i = 0; i < count; i++) { + + + for (int j = 0; j < carCount; j++) { + + car[j].move(); + } + + for (int k = 0; k < carCount; k++) { + String dashes = "-".repeat(car[k].count); + String temp_str = car[k].name + " : " + dashes; + System.out.println(temp_str); + } + + + System.out.println(); + } + + + int maxCount = 0; + for (int i = 0; i < carCount; i++) { + if (car[i].count > maxCount) { + maxCount = car[i].count; + } + } + + String winner = "최종 우승자 : "; + for (int i = 0; i < carCount; i++) { + if(car[i].count == maxCount) { + winner += car[i].name + ", "; + } + } + + winner = winner.substring(0, winner.length() - 2); + System.out.println(winner); } -} + + +} \ No newline at end of file From f98d4b7c338ae51af17d00695bea970a643f7f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Sun, 5 Apr 2026 17:26:37 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=EC=A4=80=EB=B9=841?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 197 +++++++++---------- src/main/java/racingcar/Car.java | 4 + src/main/java/racingcar/InputCarName.java | 4 + src/main/java/racingcar/InputTotalMoves.java | 4 + src/main/java/racingcar/InputValidator.java | 4 + src/main/java/racingcar/OutputWinner.java | 4 + src/main/java/racingcar/RacingCar.java | 4 + 7 files changed, 119 insertions(+), 102 deletions(-) create mode 100644 src/main/java/racingcar/Car.java create mode 100644 src/main/java/racingcar/InputCarName.java create mode 100644 src/main/java/racingcar/InputTotalMoves.java create mode 100644 src/main/java/racingcar/InputValidator.java create mode 100644 src/main/java/racingcar/OutputWinner.java create mode 100644 src/main/java/racingcar/RacingCar.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 5b8dc45..227b4b7 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -3,112 +3,105 @@ import camp.nextstep.edu.missionutils.Console; import camp.nextstep.edu.missionutils.Randoms; -class Car { - String name; - int count = 0; - public void move() { - if (Randoms.pickNumberInRange(0, 9) >= 4) { - count++; - } - } -} +//class Car { +// String name; +// int count = 0; +// public void move() { +// if (Randoms.pickNumberInRange(0, 9) >= 4) { +// count++; +// } +// } +//} public class Application { public static void main(String[] args) { +// System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); +// String temp_name = Console.readLine(); +// +// String[] cars = temp_name.split(","); +// +// for (int i = 0; i < cars.length; i++) { +// String name = cars[i]; +// if (name.isEmpty()) throw new IllegalArgumentException("이름은 빈 값일 수 없습니다."); +// if (name.length() > 5) throw new IllegalArgumentException("이름은 5자 이하만 가능합니다."); +// if (name.contains(" ")) throw new IllegalArgumentException("이름에 공백이 포함될 수 없습니다."); +// } +// +// for (int i = 0; i < cars.length; i++) { +// for (int j = i + 1; j < cars.length; j++) { +// if (cars[i].equals(cars[j])) { +// throw new IllegalArgumentException("중복된 이름이 있습니다."); +// } +// } +// } +// +// +// +// int carCount = cars.length; +// Car[] car = new Car[carCount]; +// for (int i = 0; i < carCount; i++) { +// car[i] = new Car(); +// car[i].name = cars[i]; +// } +// +// System.out.println("시도할 회수는 몇회인가요?"); +// String countInput = Console.readLine(); +// int count = Integer.parseInt(countInput); +// +// try { +// count = Integer.parseInt(countInput); +// } catch (NumberFormatException e) { +// throw new IllegalArgumentException("시도 횟수는 숫자여야 합니다."); +// } +// +// if (count <= 0) { +// throw new IllegalArgumentException("시도 횟수는 1 이상이어야 합니다."); +// } +// +// System.out.println(); +// System.out.println("실행 결과"); +// +// for (int i = 0; i < count; i++) { +// +// +// for (int j = 0; j < carCount; j++) { +// +// car[j].move(); +// } +// +// for (int k = 0; k < carCount; k++) { +// String dashes = "-".repeat(car[k].count); +// String temp_str = car[k].name + " : " + dashes; +// System.out.println(temp_str); +// } +// +// +// System.out.println(); +// } +// +// +// int maxCount = 0; +// for (int i = 0; i < carCount; i++) { +// if (car[i].count > maxCount) { +// maxCount = car[i].count; +// } +// } +// +// String winner = "최종 우승자 : "; +// for (int i = 0; i < carCount; i++) { +// if(car[i].count == maxCount) { +// winner += car[i].name + ", "; +// } +// } +// +// winner = winner.substring(0, winner.length() - 2); +// System.out.println(winner); +// } +// +// private static String[] InputCarName() { +// return new String[0]; +// } - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String temp_name = Console.readLine(); - - String[] cars = temp_name.split(","); - - for (int i = 0; i < cars.length; i++) { - String name = cars[i]; - - // 빈 값 검증 - if (name.isEmpty()) { - throw new IllegalArgumentException("이름은 빈 값일 수 없습니다."); - } - // 5자 초과 검증 - if (name.length() > 5) { - throw new IllegalArgumentException("이름은 5자 이하만 가능합니다."); - } - // 공백 포함 검증 - if (name.contains(" ")) { - throw new IllegalArgumentException("이름에 공백이 포함될 수 없습니다."); - } - } - - for (int i = 0; i < cars.length; i++) { - for (int j = i + 1; j < cars.length; j++) { - if (cars[i].equals(cars[j])) { - throw new IllegalArgumentException("중복된 이름이 있습니다."); - } - } - } - - - - int carCount = cars.length; - Car[] car = new Car[carCount]; - for (int i = 0; i < carCount; i++) { - car[i] = new Car(); - car[i].name = cars[i]; - } - - System.out.println("시도할 회수는 몇회인가요?"); - String countInput = Console.readLine(); - int count = Integer.parseInt(countInput); - - try { - count = Integer.parseInt(countInput); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("시도 횟수는 숫자여야 합니다."); - } - - if (count <= 0) { - throw new IllegalArgumentException("시도 횟수는 1 이상이어야 합니다."); - } - - System.out.println(); - System.out.println("실행 결과"); - - for (int i = 0; i < count; i++) { - - - for (int j = 0; j < carCount; j++) { - - car[j].move(); - } - - for (int k = 0; k < carCount; k++) { - String dashes = "-".repeat(car[k].count); - String temp_str = car[k].name + " : " + dashes; - System.out.println(temp_str); - } - - - System.out.println(); - } - - - int maxCount = 0; - for (int i = 0; i < carCount; i++) { - if (car[i].count > maxCount) { - maxCount = car[i].count; - } - } - - String winner = "최종 우승자 : "; - for (int i = 0; i < carCount; i++) { - if(car[i].count == maxCount) { - winner += car[i].name + ", "; - } - } - - winner = winner.substring(0, winner.length() - 2); - System.out.println(winner); } - - } \ No newline at end of file diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 0000000..246c8e5 --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,4 @@ +package racingcar; + +public class Car { +} diff --git a/src/main/java/racingcar/InputCarName.java b/src/main/java/racingcar/InputCarName.java new file mode 100644 index 0000000..36baabc --- /dev/null +++ b/src/main/java/racingcar/InputCarName.java @@ -0,0 +1,4 @@ +package racingcar; + +public class InputCarName { +} diff --git a/src/main/java/racingcar/InputTotalMoves.java b/src/main/java/racingcar/InputTotalMoves.java new file mode 100644 index 0000000..96c1600 --- /dev/null +++ b/src/main/java/racingcar/InputTotalMoves.java @@ -0,0 +1,4 @@ +package racingcar; + +public class InputTotalMoves { +} diff --git a/src/main/java/racingcar/InputValidator.java b/src/main/java/racingcar/InputValidator.java new file mode 100644 index 0000000..6498823 --- /dev/null +++ b/src/main/java/racingcar/InputValidator.java @@ -0,0 +1,4 @@ +package racingcar; + +public class InputValidator { +} diff --git a/src/main/java/racingcar/OutputWinner.java b/src/main/java/racingcar/OutputWinner.java new file mode 100644 index 0000000..96d1369 --- /dev/null +++ b/src/main/java/racingcar/OutputWinner.java @@ -0,0 +1,4 @@ +package racingcar; + +public class OutputWinner { +} diff --git a/src/main/java/racingcar/RacingCar.java b/src/main/java/racingcar/RacingCar.java new file mode 100644 index 0000000..cf13743 --- /dev/null +++ b/src/main/java/racingcar/RacingCar.java @@ -0,0 +1,4 @@ +package racingcar; + +public class RacingCar { +} From 4bee91b13069677eb6bbe2b45b4b3093a7d9cf3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Sun, 5 Apr 2026 18:31:34 +0900 Subject: [PATCH 3/9] =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A41?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 6 +++++ src/main/java/racingcar/Car.java | 11 +++++++++ src/main/java/racingcar/InputCarName.java | 21 +++++++++++++++++ src/main/java/racingcar/InputValidator.java | 4 ---- src/main/java/racingcar/Validator.java | 25 +++++++++++++++++++++ 5 files changed, 63 insertions(+), 4 deletions(-) delete mode 100644 src/main/java/racingcar/InputValidator.java create mode 100644 src/main/java/racingcar/Validator.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 227b4b7..d8bb3ea 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -2,6 +2,8 @@ import camp.nextstep.edu.missionutils.Console; import camp.nextstep.edu.missionutils.Randoms; +import java.util.ArrayList; +import java.util.List; //class Car { // String name; @@ -103,5 +105,9 @@ public static void main(String[] args) { // return new String[0]; // } + InputCarName Names = new InputCarName(); + InputTotalMoves Moves = new InputTotalMoves(); + + List Cars = new ArrayList<>(); } } \ No newline at end of file diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 246c8e5..1ac0d51 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -1,4 +1,15 @@ package racingcar; public class Car { + private String name; + private int movement = 0; + + public Car(String name) { + this.name = name; + } + + public void Move() { + movement++; + } + } diff --git a/src/main/java/racingcar/InputCarName.java b/src/main/java/racingcar/InputCarName.java index 36baabc..7068ccb 100644 --- a/src/main/java/racingcar/InputCarName.java +++ b/src/main/java/racingcar/InputCarName.java @@ -1,4 +1,25 @@ package racingcar; +import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.ArrayList; +import java.util.List; + public class InputCarName { + + public List getCars() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String input = Console.readLine(); + String[] names = input.split(","); + + Validator.CheckNames(names); + + List carList = new ArrayList<>(); + + for (int i = 0; i < names.length; i++) { + carList.add(new Car(names[i])); + } + + return carList; + } } diff --git a/src/main/java/racingcar/InputValidator.java b/src/main/java/racingcar/InputValidator.java deleted file mode 100644 index 6498823..0000000 --- a/src/main/java/racingcar/InputValidator.java +++ /dev/null @@ -1,4 +0,0 @@ -package racingcar; - -public class InputValidator { -} diff --git a/src/main/java/racingcar/Validator.java b/src/main/java/racingcar/Validator.java new file mode 100644 index 0000000..546e14c --- /dev/null +++ b/src/main/java/racingcar/Validator.java @@ -0,0 +1,25 @@ +package racingcar; + +public class Validator { + + public static void CheckNames(String[] names) { + for (int i = 0; i < names.length; i++) { + String name = names[i]; + if (name.isEmpty()) throw new IllegalArgumentException("이름은 빈 값일 수 없습니다."); + if (name.length() > 5) throw new IllegalArgumentException("이름은 5자 이하만 가능합니다."); + if (name.contains(" ")) throw new IllegalArgumentException("이름에 공백이 포함될 수 없습니다."); + } + + for (int i = 0; i < names.length; i++) { + for (int j = i + 1; j < names.length; j++) { + if (names[i].equals(names[j])) { + throw new IllegalArgumentException("중복된 이름이 있습니다."); + } + } + } + } + + public static void CheckCount(String number) { + + } +} From 81b1b2c92d03ab1898f5e701c3c75f0026fde3eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Sun, 5 Apr 2026 18:52:51 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EC=9E=85=EB=A0=A51?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 5 ++++- src/main/java/racingcar/InputTotalMoves.java | 13 +++++++++++++ src/main/java/racingcar/Validator.java | 11 +++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index d8bb3ea..044bc67 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -108,6 +108,9 @@ public static void main(String[] args) { InputCarName Names = new InputCarName(); InputTotalMoves Moves = new InputTotalMoves(); - List Cars = new ArrayList<>(); + List Cars = Names.getCars(); + int MoveCount = Moves.getTotalMoves(); } + + } \ No newline at end of file diff --git a/src/main/java/racingcar/InputTotalMoves.java b/src/main/java/racingcar/InputTotalMoves.java index 96c1600..27be98f 100644 --- a/src/main/java/racingcar/InputTotalMoves.java +++ b/src/main/java/racingcar/InputTotalMoves.java @@ -1,4 +1,17 @@ package racingcar; +import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.ArrayList; +import java.util.List; + public class InputTotalMoves { + public int getTotalMoves() { + System.out.println("시도할 회수는 몇회인가요?"); + String input = Console.readLine(); + + Validator.CheckCount(input); + + return Integer.parseInt(input); + } } diff --git a/src/main/java/racingcar/Validator.java b/src/main/java/racingcar/Validator.java index 546e14c..387f095 100644 --- a/src/main/java/racingcar/Validator.java +++ b/src/main/java/racingcar/Validator.java @@ -21,5 +21,16 @@ public static void CheckNames(String[] names) { public static void CheckCount(String number) { + int count; + + try { + count = Integer.parseInt(number); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("시도 횟수는 숫자여야 합니다."); + } + + if (count <= 0) { + throw new IllegalArgumentException("시도 횟수는 1 이상이어야 합니다."); + } } } From 30d088f852448f8799d09af48b130cca780e6206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Sun, 5 Apr 2026 20:30:13 +0900 Subject: [PATCH 5/9] =?UTF-8?q?1=EC=B0=A8=20=EC=BD=94=EB=93=9C=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 32 ++++++++++++++--------- src/main/java/racingcar/Car.java | 11 +++++++- src/main/java/racingcar/InputCarName.java | 2 +- src/main/java/racingcar/Validator.java | 5 +++- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 044bc67..3cf7da5 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,8 +1,5 @@ package racingcar; -import camp.nextstep.edu.missionutils.Console; -import camp.nextstep.edu.missionutils.Randoms; -import java.util.ArrayList; import java.util.List; //class Car { @@ -14,10 +11,6 @@ // } // } //} - - -public class Application { - public static void main(String[] args) { // System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); // String temp_name = Console.readLine(); // @@ -105,12 +98,27 @@ public static void main(String[] args) { // return new String[0]; // } - InputCarName Names = new InputCarName(); - InputTotalMoves Moves = new InputTotalMoves(); +public class Application { + public static void main(String[] args) { - List Cars = Names.getCars(); - int MoveCount = Moves.getTotalMoves(); - } + InputCarName Names = new InputCarName(); + InputTotalMoves Moves = new InputTotalMoves(); + + List cars = Names.getCars(); + int MoveCount = Moves.getTotalMoves(); + + InputCarName names = new InputCarName(); + InputTotalMoves moves = new InputTotalMoves(); + for (int i = 0; i < cars.size(); i++) { + Car car = cars.get(i); + car.getName(); + } + for (int i = 0; i < cars.size(); i++) { + Car car = cars.get(i); + System.out.println(car.getMovement()); + } + + } } \ No newline at end of file diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 1ac0d51..6bbe178 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -1,4 +1,5 @@ -package racingcar; +package racingcar; // 이 선언이 없으면 Car 클래스를 찾지 못합니다. + public class Car { private String name; @@ -12,4 +13,12 @@ public void Move() { movement++; } + public void getName() { + System.out.println(name); + } + + public int getMovement() { + return this.movement; + } + } diff --git a/src/main/java/racingcar/InputCarName.java b/src/main/java/racingcar/InputCarName.java index 7068ccb..aa63cfd 100644 --- a/src/main/java/racingcar/InputCarName.java +++ b/src/main/java/racingcar/InputCarName.java @@ -1,7 +1,7 @@ package racingcar; import camp.nextstep.edu.missionutils.Console; -import camp.nextstep.edu.missionutils.Randoms; + import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/racingcar/Validator.java b/src/main/java/racingcar/Validator.java index 387f095..7e3c30f 100644 --- a/src/main/java/racingcar/Validator.java +++ b/src/main/java/racingcar/Validator.java @@ -1,4 +1,7 @@ -package racingcar; +package racingcar; // 이 선언이 없으면 Car 클래스를 찾지 못합니다. + +import java.util.List; // List 타입을 사용하기 위해 필요합니다. +import java.util.ArrayList; public class Validator { From aca888090f80b69fd9595093fb3450502b73d2b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Mon, 6 Apr 2026 21:33:53 +0900 Subject: [PATCH 6/9] =?UTF-8?q?Racing=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=99=84=EC=84=B1=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 16 ++------- src/main/java/racingcar/Car.java | 4 +-- src/main/java/racingcar/Racing.java | 44 ++++++++++++++++++++++++ src/main/java/racingcar/RacingCar.java | 4 --- 4 files changed, 49 insertions(+), 19 deletions(-) create mode 100644 src/main/java/racingcar/Racing.java delete mode 100644 src/main/java/racingcar/RacingCar.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 3cf7da5..211564c 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -101,24 +101,14 @@ public class Application { public static void main(String[] args) { - InputCarName Names = new InputCarName(); InputTotalMoves Moves = new InputTotalMoves(); List cars = Names.getCars(); int MoveCount = Moves.getTotalMoves(); + System.out.println(); - InputCarName names = new InputCarName(); - InputTotalMoves moves = new InputTotalMoves(); - - for (int i = 0; i < cars.size(); i++) { - Car car = cars.get(i); - car.getName(); - } - for (int i = 0; i < cars.size(); i++) { - Car car = cars.get(i); - System.out.println(car.getMovement()); - } - + Racing race = new Racing(cars, MoveCount); + race.StartRacing(); } } \ No newline at end of file diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 6bbe178..dd60c0a 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -13,8 +13,8 @@ public void Move() { movement++; } - public void getName() { - System.out.println(name); + public String getName() { + return this.name; } public int getMovement() { diff --git a/src/main/java/racingcar/Racing.java b/src/main/java/racingcar/Racing.java new file mode 100644 index 0000000..d899d4f --- /dev/null +++ b/src/main/java/racingcar/Racing.java @@ -0,0 +1,44 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Randoms; + +import java.util.List; + +public class Racing { + private List cars; + private int MoveCount; + + Racing(List cars, int MoveCount) { + this.cars = cars; + this.MoveCount = MoveCount; + } + + public void StartRacing() { + System.out.println("실행 결과"); + + for (int i = 0; i < MoveCount; i++) { + + playOneRound(); + printCars(); + + } + } + + private void playOneRound(){ + for (Car car : cars) { + if (Randoms.pickNumberInRange(0, 9) >= 4) { + car.Move(); + } + } + } + + private void printCars() { + for (Car car : cars) { + String str = car.getName() + " : " + "-".repeat(car.getMovement()); + System.out.println(str); + } + System.out.println(); + } + + +} diff --git a/src/main/java/racingcar/RacingCar.java b/src/main/java/racingcar/RacingCar.java deleted file mode 100644 index cf13743..0000000 --- a/src/main/java/racingcar/RacingCar.java +++ /dev/null @@ -1,4 +0,0 @@ -package racingcar; - -public class RacingCar { -} From 2b01dbdcb5c2a9032337c2ba6ac905f9fe2be45d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Mon, 6 Apr 2026 21:55:58 +0900 Subject: [PATCH 7/9] =?UTF-8?q?OutputWinner=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=EC=99=84=EC=84=B1=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 3 +++ src/main/java/racingcar/OutputWinner.java | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 211564c..2e6ac5c 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -110,5 +110,8 @@ public static void main(String[] args) { Racing race = new Racing(cars, MoveCount); race.StartRacing(); + + OutputWinner Winner = new OutputWinner(cars); + Winner.printWinner(); } } \ No newline at end of file diff --git a/src/main/java/racingcar/OutputWinner.java b/src/main/java/racingcar/OutputWinner.java index 96d1369..f2f0e70 100644 --- a/src/main/java/racingcar/OutputWinner.java +++ b/src/main/java/racingcar/OutputWinner.java @@ -1,4 +1,26 @@ package racingcar; +import java.util.Comparator; +import java.util.List; + public class OutputWinner { + private List cars; + private int boundary; + + OutputWinner(List cars) { + this.cars = cars; + } + + public void printWinner() { + cars.sort(Comparator.comparingInt(Car::getMovement).reversed()); + boundary = cars.get(0).getMovement(); + String winner = "최종 우승자 : "; + for (int i = 0; i < cars.size(); i++) { + if (cars.get(i).getMovement() == boundary) + winner += cars.get(i).getName() + ", "; + } + winner = winner.substring(0, winner.length() - 2); + System.out.println(winner); + } + } From 3483e058c9e103450400aaa33a18ff5dbf98eba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Mon, 6 Apr 2026 22:06:10 +0900 Subject: [PATCH 8/9] =?UTF-8?q?OutputWinner=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=EC=99=84=EC=84=B1=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 96 ------------------------ 1 file changed, 96 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 2e6ac5c..f1b0a18 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -2,102 +2,6 @@ import java.util.List; -//class Car { -// String name; -// int count = 0; -// public void move() { -// if (Randoms.pickNumberInRange(0, 9) >= 4) { -// count++; -// } -// } -//} -// System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); -// String temp_name = Console.readLine(); -// -// String[] cars = temp_name.split(","); -// -// for (int i = 0; i < cars.length; i++) { -// String name = cars[i]; -// if (name.isEmpty()) throw new IllegalArgumentException("이름은 빈 값일 수 없습니다."); -// if (name.length() > 5) throw new IllegalArgumentException("이름은 5자 이하만 가능합니다."); -// if (name.contains(" ")) throw new IllegalArgumentException("이름에 공백이 포함될 수 없습니다."); -// } -// -// for (int i = 0; i < cars.length; i++) { -// for (int j = i + 1; j < cars.length; j++) { -// if (cars[i].equals(cars[j])) { -// throw new IllegalArgumentException("중복된 이름이 있습니다."); -// } -// } -// } -// -// -// -// int carCount = cars.length; -// Car[] car = new Car[carCount]; -// for (int i = 0; i < carCount; i++) { -// car[i] = new Car(); -// car[i].name = cars[i]; -// } -// -// System.out.println("시도할 회수는 몇회인가요?"); -// String countInput = Console.readLine(); -// int count = Integer.parseInt(countInput); -// -// try { -// count = Integer.parseInt(countInput); -// } catch (NumberFormatException e) { -// throw new IllegalArgumentException("시도 횟수는 숫자여야 합니다."); -// } -// -// if (count <= 0) { -// throw new IllegalArgumentException("시도 횟수는 1 이상이어야 합니다."); -// } -// -// System.out.println(); -// System.out.println("실행 결과"); -// -// for (int i = 0; i < count; i++) { -// -// -// for (int j = 0; j < carCount; j++) { -// -// car[j].move(); -// } -// -// for (int k = 0; k < carCount; k++) { -// String dashes = "-".repeat(car[k].count); -// String temp_str = car[k].name + " : " + dashes; -// System.out.println(temp_str); -// } -// -// -// System.out.println(); -// } -// -// -// int maxCount = 0; -// for (int i = 0; i < carCount; i++) { -// if (car[i].count > maxCount) { -// maxCount = car[i].count; -// } -// } -// -// String winner = "최종 우승자 : "; -// for (int i = 0; i < carCount; i++) { -// if(car[i].count == maxCount) { -// winner += car[i].name + ", "; -// } -// } -// -// winner = winner.substring(0, winner.length() - 2); -// System.out.println(winner); -// } -// -// private static String[] InputCarName() { -// return new String[0]; -// } - public class Application { public static void main(String[] args) { From 98660a80645639768f1ac90dfc31d02533308892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=9A=B0?= Date: Mon, 6 Apr 2026 22:07:16 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=EB=81=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Racing.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/racingcar/Racing.java b/src/main/java/racingcar/Racing.java index d899d4f..b9741df 100644 --- a/src/main/java/racingcar/Racing.java +++ b/src/main/java/racingcar/Racing.java @@ -20,7 +20,6 @@ public void StartRacing() { playOneRound(); printCars(); - } }