From bb90cf8a5c278c3b50950f4c6b42d9908fcfc08f Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 28 Mar 2026 23:57:02 +0900 Subject: [PATCH 01/24] =?UTF-8?q?feat:=20=EC=8B=9C=EB=8F=84=5F=ED=9A=9F?= =?UTF-8?q?=EC=88=98=5F0=5F=EC=9D=B4=ED=95=98=5F=EC=98=88=EC=99=B8=5F?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 35 +++++++++++++++++++- src/test/java/racingcar/ApplicationTest.java | 3 +- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..49f7612 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,40 @@ package racingcar; +import java.util.*; + public class Application { + public static void main(String[] args) { // TODO: 프로그램 구현 + Scanner scanner = new Scanner(System.in); + + class Car { + String name; + int score = 0; + + Car(String name) { + this.name = name; + } + } + + ArrayList Cars = new ArrayList<>(); + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String input = scanner.nextLine(); + String[] names = input.split(","); + + for(int i = 0; i < names.length; i++){ + Cars.add(new Car(names[i])); + } + + System.out.println("시도할 회수는 몇회인가요?"); + int round = scanner.nextInt(); + if(round <= 0){ + throw new IllegalArgumentException(); + } + + for(int i = 0; i < Cars.size(); i++){ + System.out.println(Cars.get(i).name); + } + System.out.println(round); } -} +} \ No newline at end of file diff --git a/src/test/java/racingcar/ApplicationTest.java b/src/test/java/racingcar/ApplicationTest.java index 03aa74b..6cb1394 100644 --- a/src/test/java/racingcar/ApplicationTest.java +++ b/src/test/java/racingcar/ApplicationTest.java @@ -64,7 +64,8 @@ class ApplicationTest extends NsTest { } @Test - void 시도_횟수_0_이하_예외() { + void + () { assertSimpleTest(() -> assertThatThrownBy(() -> runException("pobi,woni", "0")) .isInstanceOf(IllegalArgumentException.class) From 4d4980a8491f536865990d755b259c0c448f22c6 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Mar 2026 00:10:07 +0900 Subject: [PATCH 02/24] =?UTF-8?q?feat:=20=EC=8B=9C=EB=8F=84=5F=ED=9A=9F?= =?UTF-8?q?=EC=88=98=5F=EC=88=AB=EC=9E=90=5F=EC=95=84=EB=8B=98=5F=EC=98=88?= =?UTF-8?q?=EC=99=B8=5F=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 8 +++++++- src/test/java/racingcar/ApplicationTest.java | 3 +-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 49f7612..e975c99 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -8,6 +8,7 @@ public static void main(String[] args) { // TODO: 프로그램 구현 Scanner scanner = new Scanner(System.in); + int round; class Car { String name; int score = 0; @@ -27,7 +28,12 @@ class Car { } System.out.println("시도할 회수는 몇회인가요?"); - int round = scanner.nextInt(); + if (scanner.hasNextInt()) { + round = scanner.nextInt(); + } else { + throw new IllegalArgumentException(); + } + if(round <= 0){ throw new IllegalArgumentException(); } diff --git a/src/test/java/racingcar/ApplicationTest.java b/src/test/java/racingcar/ApplicationTest.java index 6cb1394..03aa74b 100644 --- a/src/test/java/racingcar/ApplicationTest.java +++ b/src/test/java/racingcar/ApplicationTest.java @@ -64,8 +64,7 @@ class ApplicationTest extends NsTest { } @Test - void - () { + void 시도_횟수_0_이하_예외() { assertSimpleTest(() -> assertThatThrownBy(() -> runException("pobi,woni", "0")) .isInstanceOf(IllegalArgumentException.class) From 0fdd0c47ad419913a2f252f9bb3fde7b6f628b54 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Mar 2026 00:22:23 +0900 Subject: [PATCH 03/24] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=5F?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=5F5=EC=9E=90=5F=EC=B4=88=EA=B3=BC=5F?= =?UTF-8?q?=EC=98=88=EC=99=B8=5F=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index e975c99..92e4976 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -24,7 +24,11 @@ class Car { String[] names = input.split(","); for(int i = 0; i < names.length; i++){ - Cars.add(new Car(names[i])); + if(names[i].length() > 5){ + throw new IllegalArgumentException(); + } else { + Cars.add(new Car(names[i])); + } } System.out.println("시도할 회수는 몇회인가요?"); From f5cc4a780831f8cbfd5e063b0b8ea1f2f89d0372 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Mar 2026 00:39:17 +0900 Subject: [PATCH 04/24] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=5F?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=5F=EA=B3=B5=EB=B0=B1=5F=ED=8F=AC=ED=95=A8=5F?= =?UTF-8?q?=EC=98=88=EC=99=B8=5F=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 92e4976..55882f2 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -24,7 +24,7 @@ class Car { String[] names = input.split(","); for(int i = 0; i < names.length; i++){ - if(names[i].length() > 5){ + if(names[i].length() > 5 || names[i].contains(" ")){ throw new IllegalArgumentException(); } else { Cars.add(new Car(names[i])); @@ -32,6 +32,7 @@ class Car { } System.out.println("시도할 회수는 몇회인가요?"); + if (scanner.hasNextInt()) { round = scanner.nextInt(); } else { From 9287cb997e6476a663205e31bc83fb3816dd8d0e Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Mar 2026 00:40:49 +0900 Subject: [PATCH 05/24] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=5F?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=5F=EB=B9=88=EA=B0=92=5F=EC=98=88=EC=99=B8=5F?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 55882f2..66f39af 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -24,7 +24,7 @@ class Car { String[] names = input.split(","); for(int i = 0; i < names.length; i++){ - if(names[i].length() > 5 || names[i].contains(" ")){ + if(names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()){ throw new IllegalArgumentException(); } else { Cars.add(new Car(names[i])); From 91902f833f1639c56a0bff327e1ebcc861442a7e Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Mar 2026 01:00:15 +0900 Subject: [PATCH 06/24] =?UTF-8?q?feat:=20=EA=B5=AC=ED=98=84=ED=95=B4?= =?UTF-8?q?=EC=95=BC=ED=95=A0=20=EB=AA=A9=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 14 ++++++++++++++ src/main/java/racingcar/Application.java | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/docs/README.md b/docs/README.md index e69de29..9fbeec9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -0,0 +1,14 @@ +구현해야할 목록 +전진_정지 +자동차_이름_5자_초과_예외_처리 +자동차_이름_공백_포함_예외_처리 +자동차_이름_빈값_예외_처리 +자동차_이름_중복_예외_처리 +시도_횟수_0_이하_예외_처리 +시도_횟수_숫자_아님_예외_처리 +단독_우승자_출력 +공동_우승자_출력 +모든_자동차_멈춤_출력 +여러_라운드_진행_출력 +한대의_자동차만_참가_출력 +한대의_자동차만_참가_정지 \ No newline at end of file diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 66f39af..4dcb86b 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -31,6 +31,12 @@ class Car { } } + for(int i = 0; i < Cars.size(); i++){ + for(int j = i + 1; j < Cars.size(); j++){ + + } + } + System.out.println("시도할 회수는 몇회인가요?"); if (scanner.hasNextInt()) { From 0a232c0097626e0c2cf79f728edc7abaf1b13b36 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Mar 2026 01:05:17 +0900 Subject: [PATCH 07/24] =?UTF-8?q?feat:=20=EA=B5=AC=ED=98=84=ED=95=B4?= =?UTF-8?q?=EC=95=BC=ED=95=A0=20=EB=AA=A9=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/docs/README.md b/docs/README.md index 9fbeec9..317744b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,14 +1,7 @@ 구현해야할 목록 -전진_정지 -자동차_이름_5자_초과_예외_처리 -자동차_이름_공백_포함_예외_처리 -자동차_이름_빈값_예외_처리 -자동차_이름_중복_예외_처리 -시도_횟수_0_이하_예외_처리 -시도_횟수_숫자_아님_예외_처리 -단독_우승자_출력 -공동_우승자_출력 -모든_자동차_멈춤_출력 -여러_라운드_진행_출력 -한대의_자동차만_참가_출력 -한대의_자동차만_참가_정지 \ No newline at end of file + +자동차 이름과 시도횟수 입력 + +레이싱 진행 출력 + +우승자 출력 \ No newline at end of file From bc89b3783973ac33ac8c91f1eedd80a54024406c Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Mar 2026 01:55:01 +0900 Subject: [PATCH 08/24] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=EA=B3=BC=20=EC=8B=9C=EB=8F=84=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 53 +++++++++++++----------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 4dcb86b..b73d209 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,26 +1,32 @@ package racingcar; import java.util.*; - +import camp.nextstep.edu.missionutils.Console; public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 - Scanner scanner = new Scanner(System.in); + ArrayList Cars = inputCars(); + int round = inputRound(); + for(int i = 0; i < Cars.size(); i++){ + System.out.println(Cars.get(i).name); + } + System.out.println(round); + } - int round; - class Car { - String name; - int score = 0; + static class Car { + String name; + int score = 0; - Car(String name) { - this.name = name; - } + Car(String name) { + this.name = name; } + } + private static ArrayList inputCars(){ ArrayList Cars = new ArrayList<>(); System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String input = scanner.nextLine(); + String input = Console.readLine(); String[] names = input.split(","); for(int i = 0; i < names.length; i++){ @@ -30,28 +36,25 @@ class Car { Cars.add(new Car(names[i])); } } + return Cars; + } - for(int i = 0; i < Cars.size(); i++){ - for(int j = i + 1; j < Cars.size(); j++){ - - } - } - + private static int inputRound(){ System.out.println("시도할 회수는 몇회인가요?"); - - if (scanner.hasNextInt()) { - round = scanner.nextInt(); - } else { + int round = 0; + try { + round = Integer.parseInt(Console.readLine().trim()); + if(round <= 0){ + throw new IllegalArgumentException(); + } + } catch(NumberFormatException e){ throw new IllegalArgumentException(); } if(round <= 0){ throw new IllegalArgumentException(); } - - for(int i = 0; i < Cars.size(); i++){ - System.out.println(Cars.get(i).name); - } - System.out.println(round); + System.out.println(" "); + return round; } } \ No newline at end of file From ec06beac1588667e2d12c2bc71b02e89f426a2ac Mon Sep 17 00:00:00 2001 From: Superpinoiman Date: Sun, 29 Mar 2026 03:43:31 +0900 Subject: [PATCH 09/24] =?UTF-8?q?feet:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=EA=B3=BC=20=EC=8B=9C=EB=8F=84=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index b73d209..e1d41ce 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -23,6 +23,16 @@ static class Car { } } + private static boolean nameAgain(ArrayList Cars){ + Set nameSet = new HashSet<>(); + for(int i = 0; i < Cars.size() ; i++) { + if (!nameSet.add(Cars.get(i).name)) { + return true; + } + } + return false; + } + private static ArrayList inputCars(){ ArrayList Cars = new ArrayList<>(); System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); @@ -36,6 +46,9 @@ private static ArrayList inputCars(){ Cars.add(new Car(names[i])); } } + if(nameAgain(Cars)){ + throw new IllegalArgumentException(); + } return Cars; } @@ -44,13 +57,9 @@ private static int inputRound(){ int round = 0; try { round = Integer.parseInt(Console.readLine().trim()); - if(round <= 0){ - throw new IllegalArgumentException(); - } } catch(NumberFormatException e){ throw new IllegalArgumentException(); } - if(round <= 0){ throw new IllegalArgumentException(); } From 53803f4b9adbad736bfeee5fee36ec650614beba Mon Sep 17 00:00:00 2001 From: Superpinoiman Date: Sun, 29 Mar 2026 04:31:54 +0900 Subject: [PATCH 10/24] =?UTF-8?q?feet:=20=EB=A0=88=EC=9D=B4=EC=8B=B1=20?= =?UTF-8?q?=EC=A7=84=ED=96=89=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 37 +++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index e1d41ce..f007b2f 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,6 +1,7 @@ package racingcar; import java.util.*; import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; public class Application { @@ -8,10 +9,7 @@ public static void main(String[] args) { // TODO: 프로그램 구현 ArrayList Cars = inputCars(); int round = inputRound(); - for(int i = 0; i < Cars.size(); i++){ - System.out.println(Cars.get(i).name); - } - System.out.println(round); + rounding(round, Cars); } static class Car { @@ -66,4 +64,35 @@ private static int inputRound(){ System.out.println(" "); return round; } + + private static ArrayList racing(ArrayList Cars){ + int random = 0; + for (int i = 0; i < Cars.size(); i++){ + random = Randoms.pickNumberInRange(0, 9); + if(random >= 4){ + Cars.get(i).score++; + } + } + return Cars; + } + + private static ArrayList rounding(int round, ArrayList Cars){ + System.out.println("실행 결과"); + for (int i = 0; i < round; i++){ + racing(Cars); + chart(Cars); + System.out.println(" "); + } + return Cars; + } + + private static void chart(ArrayList Cars){ + for(int i = 0; i < Cars.size(); i++){ + System.out.print(Cars.get(i).name + " : "); + for(int j = 0; j < Cars.get(i).score; j++){ + System.out.print("-"); + } + System.out.println(" "); + } + } } \ No newline at end of file From 1072cf354867c2d3e7013532b664d259fed319b3 Mon Sep 17 00:00:00 2001 From: Superpinoiman Date: Sun, 29 Mar 2026 05:25:55 +0900 Subject: [PATCH 11/24] =?UTF-8?q?feet:=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 34 +++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index f007b2f..ddb524d 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -9,12 +9,15 @@ public static void main(String[] args) { // TODO: 프로그램 구현 ArrayList Cars = inputCars(); int round = inputRound(); - rounding(round, Cars); + Cars = rounding(round, Cars); + Cars = compare1(Cars); + award(Cars); } static class Car { String name; int score = 0; + boolean winner = true; Car(String name) { this.name = name; @@ -95,4 +98,33 @@ private static void chart(ArrayList Cars){ System.out.println(" "); } } + + private static ArrayList compare1(ArrayList Cars){ + for(int i = 0; i < Cars.size(); i++){ + Cars.get(i).winner = compare2(Cars, i); + } + return Cars; + } + + private static boolean compare2(ArrayList Cars, int i){ + for(int j = i + 1; j < Cars.size() ; j++){ + if(Cars.get(i).score < Cars.get(j).score) return false; + } + return true; + } + + private static void award(ArrayList Cars) { + boolean flag = true; + System.out.print("최종 우승자 : "); + for (int i = 0; i < Cars.size(); i++){ + if(Cars.get(i).winner && !flag){ + System.out.print(", "); + System.out.print(Cars.get(i).name); + } + if(Cars.get(i).winner && flag) { + System.out.print(Cars.get(i).name); + flag = false; + } + } + } } \ No newline at end of file From 71aa530017daf1b5f6adb912392648ec38d43a45 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 02:10:03 +0900 Subject: [PATCH 12/24] =?UTF-8?q?refactor:=20Car=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EB=A5=BC=20=EB=B6=84=EB=A6=AC=ED=95=98=EA=B3=A0=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=A0=91?= =?UTF-8?q?=EA=B7=BC=EC=9D=84=20=EB=A9=94=EC=84=9C=EB=93=9C=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=EB=A1=9C=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/racingcar/Application.java | 50 +++++++++++------------- src/main/java/racingcar/Car.java | 34 ++++++++++++++++ 2 files changed, 56 insertions(+), 28 deletions(-) create mode 100644 src/main/java/racingcar/Car.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index ddb524d..98f2656 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -10,24 +10,14 @@ public static void main(String[] args) { ArrayList Cars = inputCars(); int round = inputRound(); Cars = rounding(round, Cars); - Cars = compare1(Cars); + Cars = findWinner(Cars); award(Cars); } - static class Car { - String name; - int score = 0; - boolean winner = true; - - Car(String name) { - this.name = name; - } - } - private static boolean nameAgain(ArrayList Cars){ Set nameSet = new HashSet<>(); for(int i = 0; i < Cars.size() ; i++) { - if (!nameSet.add(Cars.get(i).name)) { + if (!nameSet.add(Cars.get(i).getName())) { return true; } } @@ -73,7 +63,7 @@ private static ArrayList racing(ArrayList Cars){ for (int i = 0; i < Cars.size(); i++){ random = Randoms.pickNumberInRange(0, 9); if(random >= 4){ - Cars.get(i).score++; + Cars.get(i).move(); } } return Cars; @@ -91,40 +81,44 @@ private static ArrayList rounding(int round, ArrayList Cars){ private static void chart(ArrayList Cars){ for(int i = 0; i < Cars.size(); i++){ - System.out.print(Cars.get(i).name + " : "); - for(int j = 0; j < Cars.get(i).score; j++){ + System.out.print(Cars.get(i).getName() + " : "); + for(int j = 0; j < Cars.get(i).getScore(); j++){ System.out.print("-"); } System.out.println(" "); } } - private static ArrayList compare1(ArrayList Cars){ + private static ArrayList findWinner(ArrayList Cars){ + int maxScore = 0; + for(int i = 0; i < Cars.size(); i++){ - Cars.get(i).winner = compare2(Cars, i); + if(Cars.get(i).getScore() >= maxScore){ + maxScore = Cars.get(i).getScore(); + } } - return Cars; - } - private static boolean compare2(ArrayList Cars, int i){ - for(int j = i + 1; j < Cars.size() ; j++){ - if(Cars.get(i).score < Cars.get(j).score) return false; + for(int i = 0; i < Cars.size(); i++){ + if(Cars.get(i).getScore() == maxScore){ + Cars.get(i).win(); + } } - return true; + + return Cars; } private static void award(ArrayList Cars) { boolean flag = true; System.out.print("최종 우승자 : "); for (int i = 0; i < Cars.size(); i++){ - if(Cars.get(i).winner && !flag){ + if(Cars.get(i).isWinner() && !flag){ System.out.print(", "); - System.out.print(Cars.get(i).name); + System.out.print(Cars.get(i).getName()); } - if(Cars.get(i).winner && flag) { - System.out.print(Cars.get(i).name); + if(Cars.get(i).isWinner() && flag) { + System.out.print(Cars.get(i).getName()); flag = false; } } } -} \ 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..1b16759 --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,34 @@ +package racingcar; + +public class Car { + private String name; + private int score = 0; + private boolean winner = false; + + Car(String name) { + this.name = name; + } + + public String getName(){ + return this.name; + } + + public int getScore(){ + return this.score; + } + + public boolean isWinner(){ + if(this.winner) { + return true; + } + return false; + } + + public void move() { + this.score++; + } + + public void win(){ + this.winner = true; + } +} From 4943d0f8af8336eababc4c6d5ab3b0ef5f578d92 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 17:30:17 +0900 Subject: [PATCH 13/24] =?UTF-8?q?refactor:=20=EB=A0=88=EC=9D=B4=EC=8A=A4?= =?UTF-8?q?=20=EC=A7=84=ED=96=89=EC=9D=84=20Race=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 118 +------------------- src/main/java/racingcar/Car.java | 1 + src/main/java/racingcar/Race.java | 135 +++++++++++++++++++++++ 3 files changed, 138 insertions(+), 116 deletions(-) create mode 100644 src/main/java/racingcar/Race.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 98f2656..814a22d 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,124 +1,10 @@ package racingcar; -import java.util.*; -import camp.nextstep.edu.missionutils.Console; -import camp.nextstep.edu.missionutils.Randoms; public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 - ArrayList Cars = inputCars(); - int round = inputRound(); - Cars = rounding(round, Cars); - Cars = findWinner(Cars); - award(Cars); - } - - private static boolean nameAgain(ArrayList Cars){ - Set nameSet = new HashSet<>(); - for(int i = 0; i < Cars.size() ; i++) { - if (!nameSet.add(Cars.get(i).getName())) { - return true; - } - } - return false; - } - - private static ArrayList inputCars(){ - ArrayList Cars = new ArrayList<>(); - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String input = Console.readLine(); - String[] names = input.split(","); - - for(int i = 0; i < names.length; i++){ - if(names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()){ - throw new IllegalArgumentException(); - } else { - Cars.add(new Car(names[i])); - } - } - if(nameAgain(Cars)){ - throw new IllegalArgumentException(); - } - return Cars; - } - - private static int inputRound(){ - System.out.println("시도할 회수는 몇회인가요?"); - int round = 0; - try { - round = Integer.parseInt(Console.readLine().trim()); - } catch(NumberFormatException e){ - throw new IllegalArgumentException(); - } - if(round <= 0){ - throw new IllegalArgumentException(); - } - System.out.println(" "); - return round; - } - - private static ArrayList racing(ArrayList Cars){ - int random = 0; - for (int i = 0; i < Cars.size(); i++){ - random = Randoms.pickNumberInRange(0, 9); - if(random >= 4){ - Cars.get(i).move(); - } - } - return Cars; - } - - private static ArrayList rounding(int round, ArrayList Cars){ - System.out.println("실행 결과"); - for (int i = 0; i < round; i++){ - racing(Cars); - chart(Cars); - System.out.println(" "); - } - return Cars; - } - - private static void chart(ArrayList Cars){ - for(int i = 0; i < Cars.size(); i++){ - System.out.print(Cars.get(i).getName() + " : "); - for(int j = 0; j < Cars.get(i).getScore(); j++){ - System.out.print("-"); - } - System.out.println(" "); - } - } - - private static ArrayList findWinner(ArrayList Cars){ - int maxScore = 0; - - for(int i = 0; i < Cars.size(); i++){ - if(Cars.get(i).getScore() >= maxScore){ - maxScore = Cars.get(i).getScore(); - } - } - - for(int i = 0; i < Cars.size(); i++){ - if(Cars.get(i).getScore() == maxScore){ - Cars.get(i).win(); - } - } - - return Cars; - } - - private static void award(ArrayList Cars) { - boolean flag = true; - System.out.print("최종 우승자 : "); - for (int i = 0; i < Cars.size(); i++){ - if(Cars.get(i).isWinner() && !flag){ - System.out.print(", "); - System.out.print(Cars.get(i).getName()); - } - if(Cars.get(i).isWinner() && flag) { - System.out.print(Cars.get(i).getName()); - flag = false; - } - } + Race race = new Race(); + race.raceStart(); } } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 1b16759..2430969 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -31,4 +31,5 @@ public void move() { public void win(){ this.winner = true; } + } diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java new file mode 100644 index 0000000..6d55b45 --- /dev/null +++ b/src/main/java/racingcar/Race.java @@ -0,0 +1,135 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +public class Race { + private ArrayList cars = new ArrayList<>(); + private int round = 0; + + Race(){} + + public void raceStart(){ + cars = this.inputCars(); + round = this.inputRound(); + cars = this.rounding(round, cars); + cars = this.findWinner(cars); + this.award(cars); + } + + private boolean nameAgain(ArrayList cars){ + Set nameSet = new HashSet<>(); + + for(int i = 0; i < cars.size() ; i++) { + if (!nameSet.add(cars.get(i).getName())) { + return true; + } + } + return false; + } + + private ArrayList inputCars(){ + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String input = Console.readLine(); + String[] names = input.split(","); + ArrayList cars = new ArrayList<>(); + + for(int i = 0; i < names.length; i++){ + if(names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()){ + throw new IllegalArgumentException(); + } else { + cars.add(new Car(names[i])); + } + } + if(nameAgain(cars)){ + throw new IllegalArgumentException(); + } + return cars; + } + + private int inputRound(){ + System.out.println("시도할 회수는 몇회인가요?"); + int round = 0; + + try { + round = Integer.parseInt(Console.readLine().trim()); + } catch(NumberFormatException e){ + throw new IllegalArgumentException(); + } + if(round <= 0){ + throw new IllegalArgumentException(); + } + System.out.println(" "); + return round; + } + + private ArrayList racing(ArrayList cars){ + int random = 0; + + for (int i = 0; i < cars.size(); i++){ + random = Randoms.pickNumberInRange(0, 9); + if(random >= 4){ + cars.get(i).move(); + } + } + return cars; + } + + + private void chart(ArrayList cars){ + for(int i = 0; i < cars.size(); i++){ + System.out.print(cars.get(i).getName() + " : "); + for(int j = 0; j < cars.get(i).getScore(); j++){ + System.out.print("-"); + } + System.out.println(" "); + } + } + + private ArrayList rounding(int round, ArrayList Cars){ + System.out.println("실행 결과"); + for (int i = 0; i < round; i++){ + racing(Cars); + chart(Cars); + System.out.println(" "); + } + return Cars; + } + + private ArrayList findWinner(ArrayList cars){ + int maxScore = 0; + + for(int i = 0; i < cars.size(); i++){ + if(cars.get(i).getScore() >= maxScore){ + maxScore = cars.get(i).getScore(); + } + } + + for(int i = 0; i < cars.size(); i++){ + if(cars.get(i).getScore() == maxScore){ + cars.get(i).win(); + } + } + + return cars; + } + + private void award(ArrayList cars) { + boolean flag = true; + System.out.print("최종 우승자 : "); + + for (int i = 0; i < cars.size(); i++){ + if(cars.get(i).isWinner() && !flag){ + System.out.print(", "); + System.out.print(cars.get(i).getName()); + } + if(cars.get(i).isWinner() && flag) { + System.out.print(cars.get(i).getName()); + flag = false; + } + } + } +} From c982b0abf7e3c5634c81dd7561318f767a491e05 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 17:55:09 +0900 Subject: [PATCH 14/24] =?UTF-8?q?refactor:=20=EB=A0=88=EC=9D=B4=EC=8A=A4?= =?UTF-8?q?=20=EA=B2=B0=EA=B3=BC=20=EC=B6=9C=EB=A0=A5=EC=9D=84=20RaceResul?= =?UTF-8?q?t=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 7 +++- src/main/java/racingcar/Race.java | 42 ++-------------------- src/main/java/racingcar/RaceResult.java | 46 ++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 40 deletions(-) create mode 100644 src/main/java/racingcar/RaceResult.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 814a22d..992959f 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,10 +1,15 @@ package racingcar; +import java.util.ArrayList; + public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 + ArrayList cars; Race race = new Race(); - race.raceStart(); + RaceResult result = new RaceResult(); + cars = race.raceStart(); + result.showResult(cars); } } diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index 6d55b45..ecf3adb 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -7,17 +7,16 @@ import java.util.Set; public class Race { - private ArrayList cars = new ArrayList<>(); + public ArrayList cars = new ArrayList<>(); private int round = 0; Race(){} - public void raceStart(){ + public ArrayList raceStart(){ cars = this.inputCars(); round = this.inputRound(); cars = this.rounding(round, cars); - cars = this.findWinner(cars); - this.award(cars); + return cars; } private boolean nameAgain(ArrayList cars){ @@ -78,7 +77,6 @@ private ArrayList racing(ArrayList cars){ return cars; } - private void chart(ArrayList cars){ for(int i = 0; i < cars.size(); i++){ System.out.print(cars.get(i).getName() + " : "); @@ -98,38 +96,4 @@ private ArrayList rounding(int round, ArrayList Cars){ } return Cars; } - - private ArrayList findWinner(ArrayList cars){ - int maxScore = 0; - - for(int i = 0; i < cars.size(); i++){ - if(cars.get(i).getScore() >= maxScore){ - maxScore = cars.get(i).getScore(); - } - } - - for(int i = 0; i < cars.size(); i++){ - if(cars.get(i).getScore() == maxScore){ - cars.get(i).win(); - } - } - - return cars; - } - - private void award(ArrayList cars) { - boolean flag = true; - System.out.print("최종 우승자 : "); - - for (int i = 0; i < cars.size(); i++){ - if(cars.get(i).isWinner() && !flag){ - System.out.print(", "); - System.out.print(cars.get(i).getName()); - } - if(cars.get(i).isWinner() && flag) { - System.out.print(cars.get(i).getName()); - flag = false; - } - } - } } diff --git a/src/main/java/racingcar/RaceResult.java b/src/main/java/racingcar/RaceResult.java new file mode 100644 index 0000000..9c807fb --- /dev/null +++ b/src/main/java/racingcar/RaceResult.java @@ -0,0 +1,46 @@ +package racingcar; + +import java.util.ArrayList; + +public class RaceResult { + RaceResult(){} + + public void showResult(ArrayList cars){ + cars = this.findWinner(cars); + this.award(cars); + } + + private ArrayList findWinner(ArrayList cars){ + int maxScore = 0; + + for(int i = 0; i < cars.size(); i++){ + if(cars.get(i).getScore() >= maxScore){ + maxScore = cars.get(i).getScore(); + } + } + + for(int i = 0; i < cars.size(); i++){ + if(cars.get(i).getScore() == maxScore){ + cars.get(i).win(); + } + } + + return cars; + } + + private void award(ArrayList cars) { + boolean flag = true; + System.out.print("최종 우승자 : "); + + for (int i = 0; i < cars.size(); i++){ + if(cars.get(i).isWinner() && !flag){ + System.out.print(", "); + System.out.print(cars.get(i).getName()); + } + if(cars.get(i).isWinner() && flag) { + System.out.print(cars.get(i).getName()); + flag = false; + } + } + } +} From c52933a89db96b397b77afb2b9112b43ed506a37 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 18:02:31 +0900 Subject: [PATCH 15/24] =?UTF-8?q?refactor:=20cars=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=91=EA=B7=BC=EC=A0=9C=EC=96=B4=EC=9E=90=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Race.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index ecf3adb..25e68c7 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -7,7 +7,7 @@ import java.util.Set; public class Race { - public ArrayList cars = new ArrayList<>(); + private ArrayList cars = new ArrayList<>(); private int round = 0; Race(){} From aeb86db0119710404a5211e236316a07f8e9086b Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 18:06:58 +0900 Subject: [PATCH 16/24] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20else=EB=AC=B8=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/racingcar/Race.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index 25e68c7..17f46c6 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -39,9 +39,8 @@ private ArrayList inputCars(){ for(int i = 0; i < names.length; i++){ if(names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()){ throw new IllegalArgumentException(); - } else { - cars.add(new Car(names[i])); } + cars.add(new Car(names[i])); } if(nameAgain(cars)){ throw new IllegalArgumentException(); From a675c144f0f24e3f53ca49bdbc76ffef4d81d88f Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 18:29:20 +0900 Subject: [PATCH 17/24] =?UTF-8?q?refactor:=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=EB=AA=85=EC=9D=84=20=EC=A7=81=EA=B4=80=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=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/racingcar/Race.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index 17f46c6..28f413b 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -13,13 +13,13 @@ public class Race { Race(){} public ArrayList raceStart(){ - cars = this.inputCars(); + cars = this.setupCars(); round = this.inputRound(); - cars = this.rounding(round, cars); + cars = this.progressRounds(round, cars); return cars; } - private boolean nameAgain(ArrayList cars){ + private boolean isDuplicateName(ArrayList cars){ Set nameSet = new HashSet<>(); for(int i = 0; i < cars.size() ; i++) { @@ -30,7 +30,7 @@ private boolean nameAgain(ArrayList cars){ return false; } - private ArrayList inputCars(){ + private ArrayList setupCars(){ System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); String input = Console.readLine(); String[] names = input.split(","); @@ -42,7 +42,7 @@ private ArrayList inputCars(){ } cars.add(new Car(names[i])); } - if(nameAgain(cars)){ + if(isDuplicateName(cars)){ throw new IllegalArgumentException(); } return cars; @@ -64,7 +64,7 @@ private int inputRound(){ return round; } - private ArrayList racing(ArrayList cars){ + private ArrayList moveCars(ArrayList cars){ int random = 0; for (int i = 0; i < cars.size(); i++){ @@ -76,7 +76,7 @@ private ArrayList racing(ArrayList cars){ return cars; } - private void chart(ArrayList cars){ + private void printScore(ArrayList cars){ for(int i = 0; i < cars.size(); i++){ System.out.print(cars.get(i).getName() + " : "); for(int j = 0; j < cars.get(i).getScore(); j++){ @@ -86,11 +86,11 @@ private void chart(ArrayList cars){ } } - private ArrayList rounding(int round, ArrayList Cars){ + private ArrayList progressRounds(int round, ArrayList Cars){ System.out.println("실행 결과"); for (int i = 0; i < round; i++){ - racing(Cars); - chart(Cars); + moveCars(Cars); + printScore(Cars); System.out.println(" "); } return Cars; From 65439ce66cc554bb8c8904662a040a883e528c4e Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 18:30:20 +0900 Subject: [PATCH 18/24] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20new=EC=97=B0=EC=82=B0=EC=9E=90=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/racingcar/Race.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index 28f413b..c23baff 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -7,7 +7,7 @@ import java.util.Set; public class Race { - private ArrayList cars = new ArrayList<>(); + private ArrayList cars; private int round = 0; Race(){} @@ -86,13 +86,13 @@ private void printScore(ArrayList cars){ } } - private ArrayList progressRounds(int round, ArrayList Cars){ + private ArrayList progressRounds(int round, ArrayList cars){ System.out.println("실행 결과"); for (int i = 0; i < round; i++){ - moveCars(Cars); - printScore(Cars); + moveCars(cars); + printScore(cars); System.out.println(" "); } - return Cars; + return cars; } } From 06616b1c1f452e0b00a4395b1a6344793924aa2d Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 18:47:14 +0900 Subject: [PATCH 19/24] =?UTF-8?q?refactor:=20cars=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EB=A5=BC=20=EC=A0=84=EC=9A=A9=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=EB=A1=9C=20=ED=98=B8=EC=B6=9C=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=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/racingcar/Application.java | 5 ++--- src/main/java/racingcar/Race.java | 5 ++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 992959f..f66860d 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -6,10 +6,9 @@ public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 - ArrayList cars; Race race = new Race(); RaceResult result = new RaceResult(); - cars = race.raceStart(); - result.showResult(cars); + race.raceStart(); + result.showResult(race.getCars()); } } diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index c23baff..5242199 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -12,10 +12,13 @@ public class Race { Race(){} - public ArrayList raceStart(){ + public void raceStart(){ cars = this.setupCars(); round = this.inputRound(); cars = this.progressRounds(round, cars); + } + + public ArrayList getCars(){ return cars; } From ffd1ba07702cdb14fd33584a6e73bdc389425a4c Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 18:47:40 +0900 Subject: [PATCH 20/24] =?UTF-8?q?refactor:=20cars=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EB=A5=BC=20=EC=A0=84=EC=9A=A9=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=EB=A1=9C=20=ED=98=B8=EC=B6=9C=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=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/racingcar/Application.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index f66860d..8a41760 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,5 @@ package racingcar; -import java.util.ArrayList; - public class Application { public static void main(String[] args) { From 2bb3ace8cf21e53417b77a6a2f8f7d9726157b3a Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 20:28:04 +0900 Subject: [PATCH 21/24] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=B0=98=ED=99=98=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Car.java | 1 - src/main/java/racingcar/Race.java | 12 +++++------- src/main/java/racingcar/RaceResult.java | 5 ++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 2430969..1b16759 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -31,5 +31,4 @@ public void move() { public void win(){ this.winner = true; } - } diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index 5242199..5621180 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -15,7 +15,7 @@ public class Race { public void raceStart(){ cars = this.setupCars(); round = this.inputRound(); - cars = this.progressRounds(round, cars); + this.progressRounds(round, cars); } public ArrayList getCars(){ @@ -53,7 +53,7 @@ private ArrayList setupCars(){ private int inputRound(){ System.out.println("시도할 회수는 몇회인가요?"); - int round = 0; + int round; try { round = Integer.parseInt(Console.readLine().trim()); @@ -67,8 +67,8 @@ private int inputRound(){ return round; } - private ArrayList moveCars(ArrayList cars){ - int random = 0; + private void moveCars(ArrayList cars){ + int random; for (int i = 0; i < cars.size(); i++){ random = Randoms.pickNumberInRange(0, 9); @@ -76,7 +76,6 @@ private ArrayList moveCars(ArrayList cars){ cars.get(i).move(); } } - return cars; } private void printScore(ArrayList cars){ @@ -89,13 +88,12 @@ private void printScore(ArrayList cars){ } } - private ArrayList progressRounds(int round, ArrayList cars){ + private void progressRounds(int round, ArrayList cars){ System.out.println("실행 결과"); for (int i = 0; i < round; i++){ moveCars(cars); printScore(cars); System.out.println(" "); } - return cars; } } diff --git a/src/main/java/racingcar/RaceResult.java b/src/main/java/racingcar/RaceResult.java index 9c807fb..5da48a0 100644 --- a/src/main/java/racingcar/RaceResult.java +++ b/src/main/java/racingcar/RaceResult.java @@ -6,8 +6,7 @@ public class RaceResult { RaceResult(){} public void showResult(ArrayList cars){ - cars = this.findWinner(cars); - this.award(cars); + this.printWinner(this.findWinner(cars)); } private ArrayList findWinner(ArrayList cars){ @@ -28,7 +27,7 @@ private ArrayList findWinner(ArrayList cars){ return cars; } - private void award(ArrayList cars) { + private void printWinner(ArrayList cars) { boolean flag = true; System.out.print("최종 우승자 : "); From 34e1642f0523b8d99a1f6323090612b7a0ee336e Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Apr 2026 22:15:32 +0900 Subject: [PATCH 22/24] =?UTF-8?q?refactor:=20=EC=9E=90=EB=8F=99=EC=B0=A8?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=EA=B3=BC=20=EB=9D=BC=EC=9A=B4=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=85=EB=A0=A5=EA=B8=B0=EB=8A=A5=EC=9D=84=20=20?= =?UTF-8?q?RaceSetup=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A1=9C=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= 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/Race.java | 74 +++--------------------- src/main/java/racingcar/RaceResult.java | 35 +++++------ src/main/java/racingcar/RaceSetup.java | 69 ++++++++++++++++++++++ 4 files changed, 96 insertions(+), 88 deletions(-) create mode 100644 src/main/java/racingcar/RaceSetup.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 8a41760..b5e5b6d 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -4,9 +4,11 @@ public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 + RaceSetup setup = new RaceSetup(); Race race = new Race(); RaceResult result = new RaceResult(); - race.raceStart(); - result.showResult(race.getCars()); + setup.raceSetup(); + race.progressRounds(setup.getCarsList(),setup.getRound()); + result.printWinner(setup.getCarsList()); } } diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index 5621180..c1f993e 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -1,70 +1,19 @@ package racingcar; -import camp.nextstep.edu.missionutils.Console; import camp.nextstep.edu.missionutils.Randoms; import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; -public class Race { - private ArrayList cars; - private int round = 0; +public class Race { Race(){} - public void raceStart(){ - cars = this.setupCars(); - round = this.inputRound(); - this.progressRounds(round, cars); - } - - public ArrayList getCars(){ - return cars; - } - - private boolean isDuplicateName(ArrayList cars){ - Set nameSet = new HashSet<>(); - - for(int i = 0; i < cars.size() ; i++) { - if (!nameSet.add(cars.get(i).getName())) { - return true; - } - } - return false; - } - - private ArrayList setupCars(){ - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String input = Console.readLine(); - String[] names = input.split(","); - ArrayList cars = new ArrayList<>(); - - for(int i = 0; i < names.length; i++){ - if(names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()){ - throw new IllegalArgumentException(); - } - cars.add(new Car(names[i])); - } - if(isDuplicateName(cars)){ - throw new IllegalArgumentException(); - } - return cars; - } - - private int inputRound(){ - System.out.println("시도할 회수는 몇회인가요?"); - int round; - - try { - round = Integer.parseInt(Console.readLine().trim()); - } catch(NumberFormatException e){ - throw new IllegalArgumentException(); - } - if(round <= 0){ - throw new IllegalArgumentException(); + public void progressRounds(ArrayList cars, int round){ + System.out.println("실행 결과"); + for (int i = 0; i < round; i++){ + moveCars(cars); + printScore(cars); + System.out.println(" "); } - System.out.println(" "); - return round; } private void moveCars(ArrayList cars){ @@ -87,13 +36,4 @@ private void printScore(ArrayList cars){ System.out.println(" "); } } - - private void progressRounds(int round, ArrayList cars){ - System.out.println("실행 결과"); - for (int i = 0; i < round; i++){ - moveCars(cars); - printScore(cars); - System.out.println(" "); - } - } } diff --git a/src/main/java/racingcar/RaceResult.java b/src/main/java/racingcar/RaceResult.java index 5da48a0..8dd3d60 100644 --- a/src/main/java/racingcar/RaceResult.java +++ b/src/main/java/racingcar/RaceResult.java @@ -5,8 +5,22 @@ public class RaceResult { RaceResult(){} - public void showResult(ArrayList cars){ - this.printWinner(this.findWinner(cars)); + public void printWinner(ArrayList cars) { + boolean flag = true; + + cars = this.findWinner(cars); + System.out.print("최종 우승자 : "); + + for (int i = 0; i < cars.size(); i++){ + if(cars.get(i).isWinner() && !flag){ + System.out.print(", "); + System.out.print(cars.get(i).getName()); + } + if(cars.get(i).isWinner() && flag) { + System.out.print(cars.get(i).getName()); + flag = false; + } + } } private ArrayList findWinner(ArrayList cars){ @@ -23,23 +37,6 @@ private ArrayList findWinner(ArrayList cars){ cars.get(i).win(); } } - return cars; } - - private void printWinner(ArrayList cars) { - boolean flag = true; - System.out.print("최종 우승자 : "); - - for (int i = 0; i < cars.size(); i++){ - if(cars.get(i).isWinner() && !flag){ - System.out.print(", "); - System.out.print(cars.get(i).getName()); - } - if(cars.get(i).isWinner() && flag) { - System.out.print(cars.get(i).getName()); - flag = false; - } - } - } } diff --git a/src/main/java/racingcar/RaceSetup.java b/src/main/java/racingcar/RaceSetup.java new file mode 100644 index 0000000..a806311 --- /dev/null +++ b/src/main/java/racingcar/RaceSetup.java @@ -0,0 +1,69 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Console; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +public class RaceSetup { + private ArrayList cars; + private int round; + + RaceSetup(){} + + public void raceSetup(){ + cars = this.setupCars(); + this.inputRound(); + } + + public ArrayList getCarsList(){ + return cars; + } + + public int getRound(){ + return round; + } + + private boolean isDuplicateName(ArrayList cars){ + Set nameSet = new HashSet<>(); + + for(int i = 0; i < cars.size() ; i++) { + if (!nameSet.add(cars.get(i).getName())) { + return true; + } + } + return false; + } + + private ArrayList setupCars(){ + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String input = Console.readLine(); + String[] names = input.split(","); + ArrayList cars = new ArrayList<>(); + + for(int i = 0; i < names.length; i++){ + if(names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()){ + throw new IllegalArgumentException(); + } + cars.add(new Car(names[i])); + } + if(isDuplicateName(cars)){ + throw new IllegalArgumentException(); + } + return cars; + } + + private void inputRound(){ + System.out.println("시도할 회수는 몇회인가요?"); + try { + this.round = Integer.parseInt(Console.readLine().trim()); + } catch(NumberFormatException e){ + throw new IllegalArgumentException(); + } + if(this.round <= 0){ + throw new IllegalArgumentException(); + } + System.out.println(" "); + } +} From 8fa360de8203e8f6e5c9798ceb31f8e9d00eeb3f Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 5 Apr 2026 00:09:56 +0900 Subject: [PATCH 23/24] =?UTF-8?q?refactor:=20=EC=83=9D=EC=84=B1=EC=9E=90?= =?UTF-8?q?=20=EC=A3=BC=EC=9E=85=20=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=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/racingcar/Application.java | 10 ++++---- src/main/java/racingcar/Race.java | 30 ++++++++++++++---------- src/main/java/racingcar/RaceResult.java | 28 ++++++++++++---------- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index b5e5b6d..ba55ee9 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -5,10 +5,12 @@ public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 RaceSetup setup = new RaceSetup(); - Race race = new Race(); - RaceResult result = new RaceResult(); setup.raceSetup(); - race.progressRounds(setup.getCarsList(),setup.getRound()); - result.printWinner(setup.getCarsList()); + + Race race = new Race(setup.getCarsList(), setup.getRound()); + race.progressRounds(); + + RaceResult result = new RaceResult(setup.getCarsList()); + result.printWinner(); } } diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index c1f993e..b583c7d 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -5,32 +5,38 @@ public class Race { - Race(){} + private ArrayList cars; + private int round; - public void progressRounds(ArrayList cars, int round){ + Race(ArrayList cars, int round){ + this.cars = cars; + this.round = round; + } + + public void progressRounds(){ System.out.println("실행 결과"); - for (int i = 0; i < round; i++){ - moveCars(cars); - printScore(cars); + for (int i = 0; i < this.round; i++){ + moveCars(); + printScore(); System.out.println(" "); } } - private void moveCars(ArrayList cars){ + private void moveCars(){ int random; - for (int i = 0; i < cars.size(); i++){ + for (int i = 0; i < this.cars.size(); i++){ random = Randoms.pickNumberInRange(0, 9); if(random >= 4){ - cars.get(i).move(); + this.cars.get(i).move(); } } } - private void printScore(ArrayList cars){ - for(int i = 0; i < cars.size(); i++){ - System.out.print(cars.get(i).getName() + " : "); - for(int j = 0; j < cars.get(i).getScore(); j++){ + private void printScore(){ + for(int i = 0; i < this.cars.size(); i++){ + System.out.print(this.cars.get(i).getName() + " : "); + for(int j = 0; j < this.cars.get(i).getScore(); j++){ System.out.print("-"); } System.out.println(" "); diff --git a/src/main/java/racingcar/RaceResult.java b/src/main/java/racingcar/RaceResult.java index 8dd3d60..f3d9b95 100644 --- a/src/main/java/racingcar/RaceResult.java +++ b/src/main/java/racingcar/RaceResult.java @@ -3,32 +3,35 @@ import java.util.ArrayList; public class RaceResult { - RaceResult(){} + private ArrayList cars; + RaceResult(ArrayList cars){ + this.cars = cars; + } - public void printWinner(ArrayList cars) { + public void printWinner() { boolean flag = true; - cars = this.findWinner(cars); + this.findWinner(); System.out.print("최종 우승자 : "); - for (int i = 0; i < cars.size(); i++){ - if(cars.get(i).isWinner() && !flag){ + for (int i = 0; i < this.cars.size(); i++){ + if(this.cars.get(i).isWinner() && !flag){ System.out.print(", "); - System.out.print(cars.get(i).getName()); + System.out.print(this.cars.get(i).getName()); } - if(cars.get(i).isWinner() && flag) { - System.out.print(cars.get(i).getName()); + if(this.cars.get(i).isWinner() && flag) { + System.out.print(this.cars.get(i).getName()); flag = false; } } } - private ArrayList findWinner(ArrayList cars){ + private void findWinner(){ int maxScore = 0; - for(int i = 0; i < cars.size(); i++){ - if(cars.get(i).getScore() >= maxScore){ - maxScore = cars.get(i).getScore(); + for(int i = 0; i < this.cars.size(); i++){ + if(this.cars.get(i).getScore() >= maxScore){ + maxScore = this.cars.get(i).getScore(); } } @@ -37,6 +40,5 @@ private ArrayList findWinner(ArrayList cars){ cars.get(i).win(); } } - return cars; } } From 622f4667c6b3012ca28738026eced7761808d0aa Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 5 Apr 2026 01:11:41 +0900 Subject: [PATCH 24/24] =?UTF-8?q?style:=20=EA=B3=B5=EB=B0=B1=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/racingcar/Car.java | 10 +++++----- src/main/java/racingcar/Race.java | 18 +++++++++--------- src/main/java/racingcar/RaceResult.java | 18 +++++++++--------- src/main/java/racingcar/RaceSetup.java | 24 ++++++++++++------------ 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 1b16759..ce4b34d 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -9,16 +9,16 @@ public class Car { this.name = name; } - public String getName(){ + public String getName() { return this.name; } - public int getScore(){ + public int getScore() { return this.score; } - public boolean isWinner(){ - if(this.winner) { + public boolean isWinner() { + if (this.winner) { return true; } return false; @@ -28,7 +28,7 @@ public void move() { this.score++; } - public void win(){ + public void win() { this.winner = true; } } diff --git a/src/main/java/racingcar/Race.java b/src/main/java/racingcar/Race.java index b583c7d..45a4311 100644 --- a/src/main/java/racingcar/Race.java +++ b/src/main/java/racingcar/Race.java @@ -8,35 +8,35 @@ public class Race { private ArrayList cars; private int round; - Race(ArrayList cars, int round){ + Race(ArrayList cars, int round) { this.cars = cars; this.round = round; } - public void progressRounds(){ + public void progressRounds() { System.out.println("실행 결과"); - for (int i = 0; i < this.round; i++){ + for (int i = 0; i < this.round; i++) { moveCars(); printScore(); System.out.println(" "); } } - private void moveCars(){ + private void moveCars() { int random; - for (int i = 0; i < this.cars.size(); i++){ + for (int i = 0; i < this.cars.size(); i++) { random = Randoms.pickNumberInRange(0, 9); - if(random >= 4){ + if (random >= 4) { this.cars.get(i).move(); } } } - private void printScore(){ - for(int i = 0; i < this.cars.size(); i++){ + private void printScore() { + for (int i = 0; i < this.cars.size(); i++) { System.out.print(this.cars.get(i).getName() + " : "); - for(int j = 0; j < this.cars.get(i).getScore(); j++){ + for (int j = 0; j < this.cars.get(i).getScore(); j++) { System.out.print("-"); } System.out.println(" "); diff --git a/src/main/java/racingcar/RaceResult.java b/src/main/java/racingcar/RaceResult.java index f3d9b95..1df4f4c 100644 --- a/src/main/java/racingcar/RaceResult.java +++ b/src/main/java/racingcar/RaceResult.java @@ -4,7 +4,7 @@ public class RaceResult { private ArrayList cars; - RaceResult(ArrayList cars){ + RaceResult(ArrayList cars) { this.cars = cars; } @@ -14,29 +14,29 @@ public void printWinner() { this.findWinner(); System.out.print("최종 우승자 : "); - for (int i = 0; i < this.cars.size(); i++){ - if(this.cars.get(i).isWinner() && !flag){ + for (int i = 0; i < this.cars.size(); i++) { + if (this.cars.get(i).isWinner() && !flag) { System.out.print(", "); System.out.print(this.cars.get(i).getName()); } - if(this.cars.get(i).isWinner() && flag) { + if (this.cars.get(i).isWinner() && flag) { System.out.print(this.cars.get(i).getName()); flag = false; } } } - private void findWinner(){ + private void findWinner() { int maxScore = 0; - for(int i = 0; i < this.cars.size(); i++){ - if(this.cars.get(i).getScore() >= maxScore){ + for (int i = 0; i < this.cars.size(); i++) { + if (this.cars.get(i).getScore() >= maxScore) { maxScore = this.cars.get(i).getScore(); } } - for(int i = 0; i < cars.size(); i++){ - if(cars.get(i).getScore() == maxScore){ + for (int i = 0; i < cars.size(); i++) { + if (cars.get(i).getScore() == maxScore) { cars.get(i).win(); } } diff --git a/src/main/java/racingcar/RaceSetup.java b/src/main/java/racingcar/RaceSetup.java index a806311..0fd94f4 100644 --- a/src/main/java/racingcar/RaceSetup.java +++ b/src/main/java/racingcar/RaceSetup.java @@ -12,23 +12,23 @@ public class RaceSetup { RaceSetup(){} - public void raceSetup(){ + public void raceSetup() { cars = this.setupCars(); this.inputRound(); } - public ArrayList getCarsList(){ + public ArrayList getCarsList() { return cars; } - public int getRound(){ + public int getRound() { return round; } - private boolean isDuplicateName(ArrayList cars){ + private boolean isDuplicateName(ArrayList cars) { Set nameSet = new HashSet<>(); - for(int i = 0; i < cars.size() ; i++) { + for (int i = 0; i < cars.size() ; i++) { if (!nameSet.add(cars.get(i).getName())) { return true; } @@ -36,32 +36,32 @@ private boolean isDuplicateName(ArrayList cars){ return false; } - private ArrayList setupCars(){ + private ArrayList setupCars() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); String input = Console.readLine(); String[] names = input.split(","); ArrayList cars = new ArrayList<>(); - for(int i = 0; i < names.length; i++){ - if(names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()){ + for (int i = 0; i < names.length; i++) { + if (names[i].length() > 5 || names[i].contains(" ") || names[i].isEmpty()) { throw new IllegalArgumentException(); } cars.add(new Car(names[i])); } - if(isDuplicateName(cars)){ + if (isDuplicateName(cars)) { throw new IllegalArgumentException(); } return cars; } - private void inputRound(){ + private void inputRound() { System.out.println("시도할 회수는 몇회인가요?"); try { this.round = Integer.parseInt(Console.readLine().trim()); - } catch(NumberFormatException e){ + } catch(NumberFormatException e) { throw new IllegalArgumentException(); } - if(this.round <= 0){ + if (this.round <= 0) { throw new IllegalArgumentException(); } System.out.println(" ");