From 103b5ddba7a89f55de0e1b5ec60d4a25f5937543 Mon Sep 17 00:00:00 2001 From: ejjun Date: Sun, 21 Sep 2025 21:52:08 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=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 | 24 +++++++++- src/main/java/racingcar/Car.java | 37 +++++++++++++++ src/main/java/racingcar/View.java | 60 ++++++++++++++++++++++++ 3 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 src/main/java/racingcar/Car.java create mode 100644 src/main/java/racingcar/View.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..8cf7f44 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,27 @@ package racingcar; +import java.util.ArrayList; + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 - } + String[] carList = View.name(); + int num = View.count(); + + ArrayList cars = new ArrayList<>(); + for(String name : carList) { + cars.add(new Car(name)); + } + + System.out.println("실행 결과\n"); + + for(int i = 0; i < num; i++) { + for (Car car : cars) { + car.move(); + } + View.roundPrint(cars); + } + + View.getWinner(cars); + } } + diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 0000000..1ddd20a --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,37 @@ +package racingcar; + +import java.util.Random; + +public class Car { + private String name; + private int position = 0; + + public Car(String name) { + if (name == null || name.trim().isEmpty() || name.length() > 5) { + throw new IllegalArgumentException("자동차 이름은 5자 이하만 가능합니다."); + } + this.name = name.trim(); + } + + public void move() { + Random rand = new Random(); + if(rand.nextInt(10) > 3) { + this.position++; + } + } + + public void status() { + System.out.print(this.name + " : "); + for(int i = 0; i < this.position; i++) { + System.out.print("-"); + } + } + + public String getName() { + return this.name; + } + + public int getPosition() { + return this.position; + } +} diff --git a/src/main/java/racingcar/View.java b/src/main/java/racingcar/View.java new file mode 100644 index 0000000..7b1a0d3 --- /dev/null +++ b/src/main/java/racingcar/View.java @@ -0,0 +1,60 @@ +package racingcar; + +import java.util.ArrayList; +import java.util.Scanner; + +public class View { + private static Scanner scanner = new Scanner(System.in); + + public static String[] name() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + return scanner.nextLine().split(","); + } + + public static int count() { + System.out.println("시도할 횟수는 몇회인가요?"); + String tryNum = scanner.nextLine(); + try { + if(tryNum.trim().isEmpty()) { + throw new IllegalArgumentException("시도 횟수는 빈 칸일 수 없습니다."); + } + int num = Integer.parseInt(tryNum.trim()); + if (num < 1) { + throw new IllegalArgumentException("시도 횟수는 1 이상이어야 합니다."); + } + return num; + } catch (NumberFormatException e) { + throw new IllegalArgumentException("시도 횟수는 숫자만 입력 가능합니다."); + } + + } + + public static void roundPrint(ArrayList cars) { + for(Car car : cars) { + car.status(); + System.out.println(); + } + System.out.println(); + } + + public static void getWinner(ArrayList cars) { + int maxPosition = 0; + for(Car car : cars) { + if(car.getPosition() >= maxPosition) { + maxPosition = car.getPosition(); + } + } + + ArrayList winners = new ArrayList<>(); + for(Car car : cars) { + if(car.getPosition() == maxPosition) { + winners.add(car.getName()); + } + } + + System.out.print("최종 우승자 : "); + String result = String.join(", ", winners); + System.out.println(result); + } + +} From 9c94c7350cec9bd797d3ec765a80d5b0a33c1c6a Mon Sep 17 00:00:00 2001 From: ejjun Date: Sun, 21 Sep 2025 21:52:08 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[0=EC=A3=BC=EC=B0=A8]=206=EA=B8=B0=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=EC=A7=80=ED=96=A5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=97=B0=EC=8A=B5(=EC=A0=84=EC=98=88=EC=A4=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 23 ++++++++- src/main/java/racingcar/Car.java | 37 +++++++++++++++ src/main/java/racingcar/View.java | 60 ++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 src/main/java/racingcar/Car.java create mode 100644 src/main/java/racingcar/View.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..a274278 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,26 @@ package racingcar; +import java.util.ArrayList; + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 - } + String[] carList = View.name(); + int num = View.count(); + + ArrayList cars = new ArrayList<>(); + for(String name : carList) { + cars.add(new Car(name)); + } + + System.out.println("실행 결과\n"); + + for(int i = 0; i < num; i++) { + for (Car car : cars) { + car.move(); + } + View.roundPrint(cars); + } + + View.getWinner(cars); + } } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 0000000..1ddd20a --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,37 @@ +package racingcar; + +import java.util.Random; + +public class Car { + private String name; + private int position = 0; + + public Car(String name) { + if (name == null || name.trim().isEmpty() || name.length() > 5) { + throw new IllegalArgumentException("자동차 이름은 5자 이하만 가능합니다."); + } + this.name = name.trim(); + } + + public void move() { + Random rand = new Random(); + if(rand.nextInt(10) > 3) { + this.position++; + } + } + + public void status() { + System.out.print(this.name + " : "); + for(int i = 0; i < this.position; i++) { + System.out.print("-"); + } + } + + public String getName() { + return this.name; + } + + public int getPosition() { + return this.position; + } +} diff --git a/src/main/java/racingcar/View.java b/src/main/java/racingcar/View.java new file mode 100644 index 0000000..7b1a0d3 --- /dev/null +++ b/src/main/java/racingcar/View.java @@ -0,0 +1,60 @@ +package racingcar; + +import java.util.ArrayList; +import java.util.Scanner; + +public class View { + private static Scanner scanner = new Scanner(System.in); + + public static String[] name() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + return scanner.nextLine().split(","); + } + + public static int count() { + System.out.println("시도할 횟수는 몇회인가요?"); + String tryNum = scanner.nextLine(); + try { + if(tryNum.trim().isEmpty()) { + throw new IllegalArgumentException("시도 횟수는 빈 칸일 수 없습니다."); + } + int num = Integer.parseInt(tryNum.trim()); + if (num < 1) { + throw new IllegalArgumentException("시도 횟수는 1 이상이어야 합니다."); + } + return num; + } catch (NumberFormatException e) { + throw new IllegalArgumentException("시도 횟수는 숫자만 입력 가능합니다."); + } + + } + + public static void roundPrint(ArrayList cars) { + for(Car car : cars) { + car.status(); + System.out.println(); + } + System.out.println(); + } + + public static void getWinner(ArrayList cars) { + int maxPosition = 0; + for(Car car : cars) { + if(car.getPosition() >= maxPosition) { + maxPosition = car.getPosition(); + } + } + + ArrayList winners = new ArrayList<>(); + for(Car car : cars) { + if(car.getPosition() == maxPosition) { + winners.add(car.getName()); + } + } + + System.out.print("최종 우승자 : "); + String result = String.join(", ", winners); + System.out.println(result); + } + +} From c93840ef0a08fbd7ac728008f750422e9b33735b Mon Sep 17 00:00:00 2001 From: ejjun Date: Sun, 21 Sep 2025 22:12:20 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[0=EC=A3=BC=EC=B0=A8]=206=EA=B8=B0=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=EC=A7=80=ED=96=A5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=97=B0=EC=8A=B5(=EC=A0=84=EC=98=88=EC=A4=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 8cf7f44..f0acbfc 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -23,5 +23,6 @@ public static void main(String[] args) { View.getWinner(cars); } + }