From fbfab99e7142fa83cd1de102763572ac12348903 Mon Sep 17 00:00:00 2001 From: nonactress Date: Thu, 11 Sep 2025 09:08:01 +0900 Subject: [PATCH 01/49] =?UTF-8?q?Git=20-commit=20feat:1=EC=A3=BC=EC=B0=A8?= =?UTF-8?q?=20=EA=B3=BC=EC=A0=9C(=EC=84=9C=ED=98=84=EC=A7=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 56 +++++++++++++++++++++++++++++++++ src/main/java/Car.java | 38 ++++++++++++++++++++++ src/main/java/CarMain.java | 64 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 README.md create mode 100644 src/main/java/Car.java create mode 100644 src/main/java/CarMain.java diff --git a/README.md b/README.md new file mode 100644 index 00000000..8d6fc53a --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# ๐Ÿ ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๊ฒŒ์ž„ + +๊ฐ„๋‹จํ•œ ์ž๋™์ฐจ ๊ฒฝ์ฃผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ž๋™์ฐจ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์ „์ง„ํ•˜๋ฉฐ ๊ฒฝ์ฃผ๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค. + +## ๐Ÿ“‹ ๊ธฐ๋Šฅ + +- ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์ˆ˜์˜ ์ž๋™์ฐจ๋“ค์ด ๊ฒฝ์ฃผ์— ์ฐธ๊ฐ€ +- ๊ฐ ์ž๋™์ฐจ๋Š” ๋ฌด์ž‘์œ„ ์†๋„๊ฐ’์— ๋”ฐ๋ผ ์ „์ง„ ์—ฌ๋ถ€ ๊ฒฐ์ • +- ๊ฐ€์žฅ ๋งŽ์ด ์ „์ง„ํ•œ ์ž๋™์ฐจ๊ฐ€ ์šฐ์Šน (๋™์ ์ž ๋ชจ๋‘ ์šฐ์Šน) + +## ๐ŸŽฎ ๊ฒŒ์ž„ ๊ทœ์น™ + +1. ๊ฐ ์ž๋™์ฐจ๋Š” ๋งค ๋ผ์šด๋“œ๋งˆ๋‹ค 0-9 ์‚ฌ์ด์˜ ๋ฌด์ž‘์œ„ ์†๋„๊ฐ’์„ ๋ฐ›์Œ +2. ์†๋„๊ฐ’์ด **4 ์ด์ƒ**์ผ ๋•Œ๋งŒ ์ „์ง„ (60% ํ™•๋ฅ ) +3. ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ๋ผ์šด๋“œ ์ง„ํ–‰ +4. ์ตœ์ข…์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์ „์ง„ํ•œ ์ž๋™์ฐจ๊ฐ€ ์šฐ์Šน + +## ๐Ÿ’ป ์‹คํ–‰ ๋ฐฉ๋ฒ• + +```bash +javac CarMain.java Car.java +java CarMain +``` + +## ๐Ÿ“ ์‹คํ–‰ ์˜ˆ์‹œ + +``` +์ถœ์ „ํ•œ ์ž๋™์ฐจ : +3 +๋ช‡ ๋ฒˆ ๋‹ฌ๋ฆด๊นŒ? : +5 + +F1forwardCnt = 2 +F2forwardCnt = 4 +F3forwardCnt = 3 +์šฐ์Šนํ•œ car : F2 +``` + +## ํด๋ž˜์Šค ๊ตฌ์กฐ + +### Car ํด๋ž˜์Šค +- `name`: ์ž๋™์ฐจ ์ด๋ฆ„ (F1, F2, ...) +- `speed`: ํ˜„์žฌ ๋ผ์šด๋“œ์˜ ์†๋„ (0-9) +- `speedCnt`: ์ด ์ „์ง„ ํšŸ์ˆ˜ +- `carMove()`: ์†๋„ ์„ค์ • ํ›„ ์ „์ง„ ์—ฌ๋ถ€ ๊ฒฐ์ • + +### CarMain ํด๋ž˜์Šค +- ๊ฒŒ์ž„ ์ง„ํ–‰์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ธ ํด๋ž˜์Šค +- ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ +- ๊ฒฝ์ฃผ ์ง„ํ–‰ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ + +## ๐Ÿ”ง ์ฃผ์š” ๋ฉ”์„œ๋“œ + +- `race()`: ๊ฐ ์ž๋™์ฐจ์˜ ๊ฒฝ์ฃผ ์ง„ํ–‰ +- `showFrowardCnt()`: ๊ฐ ์ž๋™์ฐจ์˜ ์ „์ง„ ํšŸ์ˆ˜ ์ถœ๋ ฅ +- `showFirstPrize()`: ์šฐ์Šน์ž ์ถœ๋ ฅ diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 00000000..d9a89102 --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,38 @@ + +public class Car { + + private final String name; + private int speed; + private int speedCnt; + + + public Car(String name) { + this.name = name; + this.speedCnt=0; + } + + public int getSpeedCnt() { + return speedCnt; + } + + private void upSpeedCnt() { + speedCnt++; + } + + public String getName() { + return name; + } + + private void setSpeed() { + java.util.Random random = new java.util.Random(); + this.speed = random.nextInt(10); + } + + public void carMove() { + setSpeed(); + if (speed >= 4) { + upSpeedCnt(); + } + } + +} diff --git a/src/main/java/CarMain.java b/src/main/java/CarMain.java new file mode 100644 index 00000000..bdee5488 --- /dev/null +++ b/src/main/java/CarMain.java @@ -0,0 +1,64 @@ +import java.util.Arrays; +import java.util.Scanner; + +public class CarMain { + // public int maxIndex(int[] arr,int max) + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + System.out.println("์ถœ์ „ํ•œ ์ž๋™์ฐจ : "); + int carNum = scanner.nextInt(); + + System.out.println("๋ช‡ ๋ฒˆ ๋‹ฌ๋ฆด๊นŒ? : "); + int raceNum = scanner.nextInt(); + + scanner.close(); + + Car[] cars = new Car[carNum]; + int[] forwardCnt = new int[carNum]; + int maxCnt=-1; + + for (int i = 0; i < carNum; i++) { + race(cars, i, raceNum); + } + + showFrowardCnt(cars,carNum); + + System.out.print("์šฐ์Šนํ•œ car : "); + + for(int i=0;i Date: Thu, 11 Sep 2025 09:08:21 +0900 Subject: [PATCH 02/49] =?UTF-8?q?Git=20-commit=20feat:1=EC=A3=BC=EC=B0=A8?= =?UTF-8?q?=20=EA=B3=BC=EC=A0=9C(=EC=84=9C=ED=98=84=EC=A7=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/CarMain.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/CarMain.java b/src/main/java/CarMain.java index bdee5488..2bcc4736 100644 --- a/src/main/java/CarMain.java +++ b/src/main/java/CarMain.java @@ -1,4 +1,4 @@ -import java.util.Arrays; + import java.util.Scanner; public class CarMain { From dee665ede52bff436a4cd8f7ba6841e417886cf2 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 12 Sep 2025 14:14:53 +0900 Subject: [PATCH 03/49] =?UTF-8?q?Git=20-commit=20feat:=20=ED=95=98?= =?UTF-8?q?=EB=93=9C=EC=BD=94=EB=94=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/Car.java b/src/main/java/Car.java index d9a89102..01371225 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -4,7 +4,7 @@ public class Car { private final String name; private int speed; private int speedCnt; - + private static final int MINIMUM_SPEED_TO_MOVE = 4; public Car(String name) { this.name = name; @@ -30,7 +30,7 @@ private void setSpeed() { public void carMove() { setSpeed(); - if (speed >= 4) { + if (speed >= MINIMUM_SPEED_TO_MOVE) { upSpeedCnt(); } } From a9af148f06b121dd0f34f61a0b141dbcebe103e9 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 12 Sep 2025 20:34:07 +0900 Subject: [PATCH 04/49] =?UTF-8?q?Git=20-commit=20feat:=20RaceSetting=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RaceSetting.java | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/RaceSetting.java diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java new file mode 100644 index 00000000..73cf70bf --- /dev/null +++ b/src/main/java/RaceSetting.java @@ -0,0 +1,38 @@ +import java.util.Scanner; + +public class RaceSetting { + private Car[] cars; + private int carNum; + private int raceNum; + int[] forwardCnt; + + public void setCarNum(Scanner scanner) + { + System.out.println("์ถœ์ „ํ•œ ์ž๋™์ฐจ ์ˆ˜: "); + this.carNum = scanner.nextInt(); + } + + private void setRaceNum(Scanner scanner) { + System.out.println("๋ช‡ ๋ฒˆ ๋‹ฌ๋ฆด๊บผ์•ผ: "); + this.raceNum = scanner.nextInt(); + } + + public void setCars(Scanner scanner) { + this.cars=new Car[carNum]; + + for(int i=0;i Date: Sat, 13 Sep 2025 14:31:15 +0900 Subject: [PATCH 05/49] =?UTF-8?q?feat:=20Race,RaceSetting=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RaceSetting.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java index 73cf70bf..85c9d472 100644 --- a/src/main/java/RaceSetting.java +++ b/src/main/java/RaceSetting.java @@ -4,7 +4,6 @@ public class RaceSetting { private Car[] cars; private int carNum; private int raceNum; - int[] forwardCnt; public void setCarNum(Scanner scanner) { @@ -27,7 +26,7 @@ public void setCars(Scanner scanner) { } } - public void setRace() + RaceSetting() { Scanner scanner = new Scanner(System.in); setCarNum(scanner); From 560ac39d58ea7a9b002ceef7b0779e2ef6e4b236 Mon Sep 17 00:00:00 2001 From: nonactress Date: Sat, 13 Sep 2025 14:59:06 +0900 Subject: [PATCH 06/49] =?UTF-8?q?feat:=20RaceWinner=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 31 ++++++++----------------------- src/main/java/CarMain.java | 14 -------------- src/main/java/Race.java | 11 +++++++++++ src/main/java/RaceSetting.java | 7 ++++--- src/main/java/RaceWinner.java | 22 ++++++++++++++++++++++ 5 files changed, 45 insertions(+), 40 deletions(-) create mode 100644 src/main/java/Race.java create mode 100644 src/main/java/RaceWinner.java diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 01371225..1e69d46c 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,38 +1,23 @@ - public class Car { - private final String name; - private int speed; - private int speedCnt; - private static final int MINIMUM_SPEED_TO_MOVE = 4; + private String name; + private int moveCnt; - public Car(String name) { - this.name = name; - this.speedCnt=0; - } - public int getSpeedCnt() { - return speedCnt; + public int getmoveCnt() { + return moveCnt; } - private void upSpeedCnt() { - speedCnt++; + private void upmoveCnt() { + moveCnt++; } public String getName() { return name; } - private void setSpeed() { - java.util.Random random = new java.util.Random(); - this.speed = random.nextInt(10); - } - - public void carMove() { - setSpeed(); - if (speed >= MINIMUM_SPEED_TO_MOVE) { - upSpeedCnt(); - } + public void setName(String name) { + this.name = name; } } diff --git a/src/main/java/CarMain.java b/src/main/java/CarMain.java index 2bcc4736..e53fd343 100644 --- a/src/main/java/CarMain.java +++ b/src/main/java/CarMain.java @@ -5,22 +5,8 @@ public class CarMain { // public int maxIndex(int[] arr,int max) public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - System.out.println("์ถœ์ „ํ•œ ์ž๋™์ฐจ : "); - int carNum = scanner.nextInt(); - System.out.println("๋ช‡ ๋ฒˆ ๋‹ฌ๋ฆด๊นŒ? : "); - int raceNum = scanner.nextInt(); - scanner.close(); - - Car[] cars = new Car[carNum]; - int[] forwardCnt = new int[carNum]; - int maxCnt=-1; - - for (int i = 0; i < carNum; i++) { - race(cars, i, raceNum); - } showFrowardCnt(cars,carNum); diff --git a/src/main/java/Race.java b/src/main/java/Race.java new file mode 100644 index 00000000..b586b03f --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,11 @@ +public class Race { + private static final int MINIMUM_SPEED_TO_MOVE = 4; + java.util.Random random = new java.util.Random(); + + Race() + { + RaceSetting raceSetting = new RaceSetting(); + RaceWinner()// ์ด๊ธด ์ž๋™์ฐจ ์ถœ๋ ฅ + + } +} diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java index 85c9d472..db72ce18 100644 --- a/src/main/java/RaceSetting.java +++ b/src/main/java/RaceSetting.java @@ -1,9 +1,9 @@ import java.util.Scanner; public class RaceSetting { - private Car[] cars; - private int carNum; - private int raceNum; + protected Car[] cars; + protected int carNum; + protected int raceNum; public void setCarNum(Scanner scanner) { @@ -21,6 +21,7 @@ public void setCars(Scanner scanner) { for(int i=0;i Date: Sun, 14 Sep 2025 00:15:08 +0900 Subject: [PATCH 07/49] =?UTF-8?q?feat:=20setMoveCnt=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RaceSetting.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java index db72ce18..67123ec1 100644 --- a/src/main/java/RaceSetting.java +++ b/src/main/java/RaceSetting.java @@ -1,9 +1,14 @@ import java.util.Scanner; +import java.util.Random; public class RaceSetting { protected Car[] cars; protected int carNum; protected int raceNum; + private static final int MINIMUM_SPEED_TO_MOVE = 4; + + Random random = new Random(); + public void setCarNum(Scanner scanner) { @@ -24,9 +29,26 @@ public void setCars(Scanner scanner) { System.out.println(i + "๋ฒˆ ์ž๋™์ฐจ ์ด๋ฆ„ : "); String temp=scanner.next(); cars[i].setName(temp); + setMoveCnt(Car temp,int ); } } + + public void setMoveCnt(Car temp,int ) // car.move ์ง„ํ–‰ + { + for(int i=0;iMINIMUM_SPEED_TO_MOVE) + { + temp.upmoveCnt(); + } + } RaceSetting() { Scanner scanner = new Scanner(System.in); From dcb4ec5e7b5a3dbcc8a3b0ce8c9bc6c915f51f91 Mon Sep 17 00:00:00 2001 From: nonactress Date: Sun, 14 Sep 2025 00:27:09 +0900 Subject: [PATCH 08/49] =?UTF-8?q?feat=20:=20=EC=A0=84=EC=B2=B4=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20=EB=B0=8F?= =?UTF-8?q?=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD=20(=20Car,=20Race,?= =?UTF-8?q?=20RaceSetting,=20RaceWinner)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 4 ++-- src/main/java/Race.java | 10 ++-------- src/main/java/RaceSetting.java | 28 ++++++++++++---------------- src/main/java/RaceWinner.java | 25 ++++++++++++++++--------- 4 files changed, 32 insertions(+), 35 deletions(-) diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 1e69d46c..3f0cf1e4 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,14 +1,14 @@ public class Car { private String name; - private int moveCnt; + private int moveCnt=0; public int getmoveCnt() { return moveCnt; } - private void upmoveCnt() { + public void upmoveCnt() { moveCnt++; } diff --git a/src/main/java/Race.java b/src/main/java/Race.java index b586b03f..85363be8 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -1,11 +1,5 @@ public class Race { - private static final int MINIMUM_SPEED_TO_MOVE = 4; - java.util.Random random = new java.util.Random(); - - Race() - { - RaceSetting raceSetting = new RaceSetting(); - RaceWinner()// ์ด๊ธด ์ž๋™์ฐจ ์ถœ๋ ฅ - + public static void main(String[] args) { + RaceWinner raceWinner = new RaceWinner(); } } diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java index 67123ec1..956f75f2 100644 --- a/src/main/java/RaceSetting.java +++ b/src/main/java/RaceSetting.java @@ -10,8 +10,7 @@ public class RaceSetting { Random random = new Random(); - public void setCarNum(Scanner scanner) - { + public void setCarNum(Scanner scanner) { System.out.println("์ถœ์ „ํ•œ ์ž๋™์ฐจ ์ˆ˜: "); this.carNum = scanner.nextInt(); } @@ -22,35 +21,32 @@ private void setRaceNum(Scanner scanner) { } public void setCars(Scanner scanner) { - this.cars=new Car[carNum]; + this.cars = new Car[carNum]; - for(int i=0;iMINIMUM_SPEED_TO_MOVE) - { + + void checkSpeedTOMove(Car temp) { + if (random.nextInt(10) > MINIMUM_SPEED_TO_MOVE) { temp.upmoveCnt(); } } - RaceSetting() - { + + RaceSetting() { Scanner scanner = new Scanner(System.in); setCarNum(scanner); setRaceNum(scanner); diff --git a/src/main/java/RaceWinner.java b/src/main/java/RaceWinner.java index 12ee1ad2..00b76fcb 100644 --- a/src/main/java/RaceWinner.java +++ b/src/main/java/RaceWinner.java @@ -1,18 +1,25 @@ public class RaceWinner extends RaceSetting{ - RaceSetting raceSetting; int winnerCnt = -1; - RaceWinner(RaceSetting raceSetting) { - this.raceSetting = raceSetting; + void findWinnerCnt() // + { + for (Car car : cars) { + if(winnerCnt Date: Sun, 14 Sep 2025 00:50:53 +0900 Subject: [PATCH 09/49] =?UTF-8?q?feat=20:=20RaceSetting,RaceWinner=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RaceSetting.java | 22 +++++++++++----------- src/main/java/RaceWinner.java | 18 +++++++++++++----- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java index 956f75f2..1f770b55 100644 --- a/src/main/java/RaceSetting.java +++ b/src/main/java/RaceSetting.java @@ -20,24 +20,22 @@ private void setRaceNum(Scanner scanner) { this.raceNum = scanner.nextInt(); } - public void setCars(Scanner scanner) { + public void createCars(Scanner scanner) { this.cars = new Car[carNum]; - - for (int i = 0; i < raceNum; i++) { - System.out.println(i + "๋ฒˆ ์ž๋™์ฐจ ์ด๋ฆ„ : "); + for (int i = 0; i < carNum; i++) { + System.out.println((i + 1) + "๋ฒˆ ์ž๋™์ฐจ ์ด๋ฆ„ : "); String temp = scanner.next(); + cars[i] = new Car(); cars[i].setName(temp); - setMoveCnt(cars[i]); } } - - public void setMoveCnt(Car temp) // car.move ์ง„ํ–‰ - { + public void runRace() { for (int i = 0; i < raceNum; i++) { - checkSpeedTOMove(cars[i]); + for (Car car : cars) { + checkSpeedTOMove(car); + } } - } void checkSpeedTOMove(Car temp) { @@ -46,11 +44,13 @@ void checkSpeedTOMove(Car temp) { } } + RaceSetting() { Scanner scanner = new Scanner(System.in); setCarNum(scanner); setRaceNum(scanner); - setCars(scanner); + createCars(scanner); + runRace(); scanner.close(); } } diff --git a/src/main/java/RaceWinner.java b/src/main/java/RaceWinner.java index 00b76fcb..1f7e3a61 100644 --- a/src/main/java/RaceWinner.java +++ b/src/main/java/RaceWinner.java @@ -1,6 +1,19 @@ public class RaceWinner extends RaceSetting{ int winnerCnt = -1; + RaceWinner() { + super(); + findWinnerCnt(); + printAllCarMove(); + printWinner(); + } + + void printAllCarMove() + { + for (Car car : cars) { + System.out.println("์ด๋ฆ„ : " + car.getName()+" Move: " + car.getmoveCnt()); + } + } void findWinnerCnt() // { for (Car car : cars) { @@ -21,9 +34,4 @@ void printWinner() } } } - - - - - } From 480f75199eabcbb0cfcd126c36417baeaa634d04 Mon Sep 17 00:00:00 2001 From: nonactress Date: Sun, 14 Sep 2025 00:59:39 +0900 Subject: [PATCH 10/49] =?UTF-8?q?feat=20:=20depth=202=20=EC=9D=B4=EC=83=81?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RaceSetting.java | 13 ++++++++++--- src/main/java/RaceWinner.java | 33 +++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java index 1f770b55..c20297ac 100644 --- a/src/main/java/RaceSetting.java +++ b/src/main/java/RaceSetting.java @@ -32,13 +32,20 @@ public void createCars(Scanner scanner) { public void runRace() { for (int i = 0; i < raceNum; i++) { - for (Car car : cars) { - checkSpeedTOMove(car); + { + checkSpeedTOMove(); } } } - void checkSpeedTOMove(Car temp) { + void checkSpeedTOMove() { + for (Car car : cars) { + isOverMinToMove(car); + } + + } + + private void isOverMinToMove(Car temp) { if (random.nextInt(10) > MINIMUM_SPEED_TO_MOVE) { temp.upmoveCnt(); } diff --git a/src/main/java/RaceWinner.java b/src/main/java/RaceWinner.java index 1f7e3a61..5b4a99e9 100644 --- a/src/main/java/RaceWinner.java +++ b/src/main/java/RaceWinner.java @@ -1,4 +1,4 @@ -public class RaceWinner extends RaceSetting{ +public class RaceWinner extends RaceSetting { int winnerCnt = -1; RaceWinner() { @@ -8,30 +8,35 @@ public class RaceWinner extends RaceSetting{ printWinner(); } - void printAllCarMove() - { + void printAllCarMove() { for (Car car : cars) { - System.out.println("์ด๋ฆ„ : " + car.getName()+" Move: " + car.getmoveCnt()); + System.out.println("์ด๋ฆ„ : " + car.getName() + " Move: " + car.getmoveCnt()); } } + void findWinnerCnt() // { for (Car car : cars) { - if(winnerCnt Date: Sun, 14 Sep 2025 01:15:37 +0900 Subject: [PATCH 11/49] =?UTF-8?q?feat=20:=20README=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 62 +++++++++++++++++-------------------------------------- 1 file changed, 19 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 8d6fc53a..1d32e550 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,32 @@ -# ๐Ÿ ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๊ฒŒ์ž„ -๊ฐ„๋‹จํ•œ ์ž๋™์ฐจ ๊ฒฝ์ฃผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ž๋™์ฐจ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์ „์ง„ํ•˜๋ฉฐ ๊ฒฝ์ฃผ๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค. +--- -## ๐Ÿ“‹ ๊ธฐ๋Šฅ +# Java Racing Car -- ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์ˆ˜์˜ ์ž๋™์ฐจ๋“ค์ด ๊ฒฝ์ฃผ์— ์ฐธ๊ฐ€ -- ๊ฐ ์ž๋™์ฐจ๋Š” ๋ฌด์ž‘์œ„ ์†๋„๊ฐ’์— ๋”ฐ๋ผ ์ „์ง„ ์—ฌ๋ถ€ ๊ฒฐ์ • -- ๊ฐ€์žฅ ๋งŽ์ด ์ „์ง„ํ•œ ์ž๋™์ฐจ๊ฐ€ ์šฐ์Šน (๋™์ ์ž ๋ชจ๋‘ ์šฐ์Šน) +์ด๊ฒƒ์€ ์ž๋™์ฐจ ๊ฒฝ์ฃผ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฐ„๋‹จํ•œ Java ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. -## ๐ŸŽฎ ๊ฒŒ์ž„ ๊ทœ์น™ +## ์‹คํ–‰ ๋ฐฉ๋ฒ• -1. ๊ฐ ์ž๋™์ฐจ๋Š” ๋งค ๋ผ์šด๋“œ๋งˆ๋‹ค 0-9 ์‚ฌ์ด์˜ ๋ฌด์ž‘์œ„ ์†๋„๊ฐ’์„ ๋ฐ›์Œ -2. ์†๋„๊ฐ’์ด **4 ์ด์ƒ**์ผ ๋•Œ๋งŒ ์ „์ง„ (60% ํ™•๋ฅ ) -3. ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ๋ผ์šด๋“œ ์ง„ํ–‰ -4. ์ตœ์ข…์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์ „์ง„ํ•œ ์ž๋™์ฐจ๊ฐ€ ์šฐ์Šน +1. ๋ชจ๋“  `.java` ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. +2. `Race` ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: `java Race` -## ๐Ÿ’ป ์‹คํ–‰ ๋ฐฉ๋ฒ• +## ์ž‘๋™ ๋ฐฉ์‹ -```bash -javac CarMain.java Car.java -java CarMain -``` +์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค: -## ๐Ÿ“ ์‹คํ–‰ ์˜ˆ์‹œ +1. **์ž๋™์ฐจ ์ˆ˜:** ๊ฒฝ์ฃผ์— ์ฐธ๊ฐ€ํ•  ์ž๋™์ฐจ์˜ ์ˆ˜ +2. **๋ผ์šด๋“œ ์ˆ˜:** ๊ฒฝ์ฃผ๊ฐ€ ์ง€์†๋  ๋ผ์šด๋“œ ์ˆ˜ +3. **์ž๋™์ฐจ ์ด๋ฆ„:** ๊ฐ ์ž๋™์ฐจ์˜ ์ด๋ฆ„ -``` -์ถœ์ „ํ•œ ์ž๋™์ฐจ : -3 -๋ช‡ ๋ฒˆ ๋‹ฌ๋ฆด๊นŒ? : -5 +ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒฝ์ฃผ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ผ์šด๋“œ๋งˆ๋‹ค ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. 0๋ถ€ํ„ฐ 9 ์‚ฌ์ด์—์„œ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ์ˆซ์ž๊ฐ€ 4๋ณด๋‹ค ํฌ๋ฉด ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•ฉ๋‹ˆ๋‹ค. -F1forwardCnt = 2 -F2forwardCnt = 4 -F3forwardCnt = 3 -์šฐ์Šนํ•œ car : F2 -``` +๊ฒฝ์ฃผ๊ฐ€ ๋๋‚˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐ ์ž๋™์ฐจ๊ฐ€ ์ด๋™ํ•œ ์ด ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์šฐ์Šน์ž(๋“ค)๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. -## ํด๋ž˜์Šค ๊ตฌ์กฐ +## ํด๋ž˜์Šค ์„ค๋ช… -### Car ํด๋ž˜์Šค -- `name`: ์ž๋™์ฐจ ์ด๋ฆ„ (F1, F2, ...) -- `speed`: ํ˜„์žฌ ๋ผ์šด๋“œ์˜ ์†๋„ (0-9) -- `speedCnt`: ์ด ์ „์ง„ ํšŸ์ˆ˜ -- `carMove()`: ์†๋„ ์„ค์ • ํ›„ ์ „์ง„ ์—ฌ๋ถ€ ๊ฒฐ์ • +* **`Car.java`**: ์ด๋ฆ„๊ณผ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ž๋™์ฐจ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. +* **`RaceSetting.java`**: ๊ฒฝ์ฃผ๋ฅผ ์„ค์ •ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ ์ˆ˜, ๋ผ์šด๋“œ ์ˆ˜, ์ž๋™์ฐจ ์ด๋ฆ„์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฒฝ์ฃผ ์‹คํ–‰๊ณผ ์ž๋™์ฐจ ์ด๋™์— ๊ด€ํ•œ ๋กœ์ง์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. +* **`RaceWinner.java`**: ์ด ํด๋ž˜์Šค๋Š” `RaceSetting`์„ ํ™•์žฅํ•˜๋ฉฐ ๊ฒฝ์ฃผ์˜ ์šฐ์Šน์ž๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์ด๋™ํ•œ ์ž๋™์ฐจ๋ฅผ ์ฐพ์•„ ๊ทธ ์ด๋ฆ„์„ ์šฐ์Šน์ž๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. +* **`Race.java`**: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. ๊ฒฝ์ฃผ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด `RaceWinner`์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. -### CarMain ํด๋ž˜์Šค -- ๊ฒŒ์ž„ ์ง„ํ–‰์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ธ ํด๋ž˜์Šค -- ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ -- ๊ฒฝ์ฃผ ์ง„ํ–‰ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ - -## ๐Ÿ”ง ์ฃผ์š” ๋ฉ”์„œ๋“œ - -- `race()`: ๊ฐ ์ž๋™์ฐจ์˜ ๊ฒฝ์ฃผ ์ง„ํ–‰ -- `showFrowardCnt()`: ๊ฐ ์ž๋™์ฐจ์˜ ์ „์ง„ ํšŸ์ˆ˜ ์ถœ๋ ฅ -- `showFirstPrize()`: ์šฐ์Šน์ž ์ถœ๋ ฅ +--- From 62b3941bbd99c8ff48ea4aca04f597691ad2cb3e Mon Sep 17 00:00:00 2001 From: nonactress Date: Sun, 14 Sep 2025 01:18:05 +0900 Subject: [PATCH 12/49] =?UTF-8?q?feat=20:=20README=20=EC=88=98=EC=A0=952?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 1d32e550..cdf4b4ef 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,5 @@ --- - -# Java Racing Car - -์ด๊ฒƒ์€ ์ž๋™์ฐจ ๊ฒฝ์ฃผ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฐ„๋‹จํ•œ Java ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. - -## ์‹คํ–‰ ๋ฐฉ๋ฒ• - -1. ๋ชจ๋“  `.java` ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. -2. `Race` ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: `java Race` - ## ์ž‘๋™ ๋ฐฉ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค: @@ -18,9 +8,9 @@ 2. **๋ผ์šด๋“œ ์ˆ˜:** ๊ฒฝ์ฃผ๊ฐ€ ์ง€์†๋  ๋ผ์šด๋“œ ์ˆ˜ 3. **์ž๋™์ฐจ ์ด๋ฆ„:** ๊ฐ ์ž๋™์ฐจ์˜ ์ด๋ฆ„ -ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒฝ์ฃผ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ผ์šด๋“œ๋งˆ๋‹ค ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. 0๋ถ€ํ„ฐ 9 ์‚ฌ์ด์—์„œ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ์ˆซ์ž๊ฐ€ 4๋ณด๋‹ค ํฌ๋ฉด ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•ฉ๋‹ˆ๋‹ค. - -๊ฒฝ์ฃผ๊ฐ€ ๋๋‚˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐ ์ž๋™์ฐจ๊ฐ€ ์ด๋™ํ•œ ์ด ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์šฐ์Šน์ž(๋“ค)๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. +ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒฝ์ฃผ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ผ์šด๋“œ๋งˆ๋‹ค ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. +0๋ถ€ํ„ฐ 9 ์‚ฌ์ด์—์„œ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ์ˆซ์ž๊ฐ€ 4๋ณด๋‹ค ํฌ๋ฉด ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•ฉ๋‹ˆ๋‹ค. +๊ฒฝ์ฃผ๊ฐ€ ๋๋‚˜๋ฉด ๊ฐ ์ž๋™์ฐจ๊ฐ€ ์ด๋™ํ•œ ์ด ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์šฐ์Šน์ž(๋“ค)๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ## ํด๋ž˜์Šค ์„ค๋ช… From 864e6c09197ffcf39b1f2cd7d31efd94cab594f1 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 15 Sep 2025 10:09:07 +0900 Subject: [PATCH 13/49] =?UTF-8?q?feat=20:=20mvc=20=ED=8C=A8=ED=84=B4=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20-=20Car=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 3f0cf1e4..52775a96 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,23 +1,24 @@ public class Car { + private static final int MOVE_CONDITION = 4; // ์ „์ง„ ์กฐ๊ฑด + private final String name; + private int position = 0; - private String name; - private int moveCnt=0; - - - public int getmoveCnt() { - return moveCnt; + public Car(String name) { + this.name = name; } - public void upmoveCnt() { - moveCnt++; + // ์ž๋™์ฐจ์˜ ์ด๋™ ๋กœ์ง. ์™ธ๋ถ€์—์„œ ๋ฐ›์€ ๋žœ๋ค ๊ฐ’์— ๋”ฐ๋ผ ์Šค์Šค๋กœ ์›€์ง์ž…๋‹ˆ๋‹ค. + public void move(int randomNumber) { + if (randomNumber >= MOVE_CONDITION) { + this.position++; + } } public String getName() { return name; } - public void setName(String name) { - this.name = name; + public int getPosition() { + return position; } - -} +} \ No newline at end of file From 97b4d95a9e403039a116b67e7a1dddf453727fa6 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 15 Sep 2025 10:14:15 +0900 Subject: [PATCH 14/49] =?UTF-8?q?feat=20:=20mvc=20=ED=8C=A8=ED=84=B4=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20-=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20'Cars'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Cars.java | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/main/java/Cars.java diff --git a/src/main/java/Cars.java b/src/main/java/Cars.java new file mode 100644 index 00000000..acda209a --- /dev/null +++ b/src/main/java/Cars.java @@ -0,0 +1,64 @@ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class Cars { + private final List cars; + private final Random random = new Random(); + + public Cars(String[] carNames) { + this.cars = new ArrayList<>(); + for (String name : carNames) { + cars.add(new Car(name)); + } + } + + // ๋ชจ๋“  ์ž๋™์ฐจ๋ฅผ ํ•œ ๋ผ์šด๋“œ ๋™์•ˆ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค. + public void moveAll() { + for (Car car : cars) { + car.move(random.nextInt(10)); + } + } + + // ์šฐ์Šน์ž๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. + public List findWinners() { + int maxPosition = findMaxPosition(); + List winners = new ArrayList<>(); + for (Car car : cars) { + // depth 2์— ์žˆ๋˜ if๋ฌธ์„ ๋ฉ”์†Œ๋“œ๋กœ ๋ถ„๋ฆฌ + addWinnerIfPositionMatches(winners, car, maxPosition); + } + return winners; + } + + // ์šฐ์Šน์ž์ผ ๊ฒฝ์šฐ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋กœ์ง์„ ๋ถ„๋ฆฌํ•œ ๋ฉ”์†Œ๋“œ + private void addWinnerIfPositionMatches(List winners, Car car, int maxPosition) { + if (car.getPosition() == maxPosition) { + winners.add(car.getName()); + } + } + + // ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์ด๋™ํ•œ ์ž๋™์ฐจ์˜ ์œ„์น˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. + private int findMaxPosition() { + int maxPosition = 0; + for (Car car : cars) { + // depth 2์— ์žˆ๋˜ if๋ฌธ์„ ๋ฉ”์†Œ๋“œ๋กœ ๋ถ„๋ฆฌ + maxPosition = updateMaxPosition(maxPosition, car); + } + return maxPosition; + } + + // ํ˜„์žฌ ์ตœ๋Œ€ ์œ„์น˜์™€ ์ž๋™์ฐจ์˜ ์œ„์น˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ + private int updateMaxPosition(int currentMax, Car car) { + if (car.getPosition() > currentMax) { + return car.getPosition(); + } + return currentMax; + } + + // View๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Car ๋ฆฌ์ŠคํŠธ์˜ ๋ณต์‚ฌ๋ณธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + public List getCars() { + return Collections.unmodifiableList(cars); + } +} \ No newline at end of file From 035ecdd517d4849c7ef3de41e11bd56dfb8f9a41 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 15 Sep 2025 10:14:52 +0900 Subject: [PATCH 15/49] =?UTF-8?q?feat=20:=20mvc=20=ED=8C=A8=ED=84=B4=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20-=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20'InputView'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/InputView.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/InputView.java diff --git a/src/main/java/InputView.java b/src/main/java/InputView.java new file mode 100644 index 00000000..e6a17ec0 --- /dev/null +++ b/src/main/java/InputView.java @@ -0,0 +1,17 @@ +import java.util.Scanner; + +public class InputView { + private static final Scanner scanner = new Scanner(System.in); + + public static String[] getCarNames() { + System.out.println("๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์ด๋ฆ„์€ ์‰ผํ‘œ(,) ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„)"); + return scanner.nextLine().split(","); + } + + public static int getRaceCount() { + System.out.println("์‹œ๋„ํ•  ํšŒ์ˆ˜๋Š” ๋ช‡ํšŒ์ธ๊ฐ€์š”?"); + int count = scanner.nextInt(); + scanner.nextLine(); // ๊ฐœํ–‰ ๋ฌธ์ž ์ œ๊ฑฐ + return count; + } +} \ No newline at end of file From 0de29dfb2244e5acb3c80226f941bb4f54ea8c90 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 15 Sep 2025 11:02:33 +0900 Subject: [PATCH 16/49] =?UTF-8?q?feat=20:=20mvc=20=ED=8C=A8=ED=84=B4=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20-=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20'OutputView'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/OutputView.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/OutputView.java diff --git a/src/main/java/OutputView.java b/src/main/java/OutputView.java new file mode 100644 index 00000000..362dbdf6 --- /dev/null +++ b/src/main/java/OutputView.java @@ -0,0 +1,25 @@ +import java.util.List; +import java.util.stream.Collectors; + +public class OutputView { + + public static void printResultMessage() { + System.out.println("\n์‹คํ–‰ ๊ฒฐ๊ณผ"); + } + + public static void printRoundResult(List cars) { + for (Car car : cars) { + System.out.print(car.getName() + " : "); + for (int i = 0; i < car.getPosition(); i++) { + System.out.print("-"); + } + System.out.println(); + } + System.out.println(); + } + + public static void printWinners(List winners) { + String winnerNames = String.join(", ", winners); + System.out.println("์ตœ์ข… ์šฐ์Šน์ž : " + winnerNames); + } +} \ No newline at end of file From f660a28328206d11f729e2096d5a3613e22cd0c1 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 15 Sep 2025 11:04:06 +0900 Subject: [PATCH 17/49] =?UTF-8?q?feat=20:=20mvc=20=ED=8C=A8=ED=84=B4=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20-=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20'RacingCController'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RacingController.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/main/java/RacingController.java diff --git a/src/main/java/RacingController.java b/src/main/java/RacingController.java new file mode 100644 index 00000000..75cf506f --- /dev/null +++ b/src/main/java/RacingController.java @@ -0,0 +1,23 @@ + + + +public class RacingController { + public void run() { + // 1. ์ž…๋ ฅ (View) + String[] carNames = InputView.getCarNames(); + int raceCount = InputView.getRaceCount(); + + // 2. ์ƒ์„ฑ (Model) + Cars cars = new Cars(carNames); + + // 3. ์‹คํ–‰ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ (Controller -> Model, Controller -> View) + OutputView.printResultMessage(); + for (int i = 0; i < raceCount; i++) { + cars.moveAll(); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ + OutputView.printRoundResult(cars.getCars()); // View์— ์ถœ๋ ฅ ์š”์ฒญ + } + + // 4. ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ (Controller -> Model, Controller -> View) + OutputView.printWinners(cars.findWinners()); + } +} \ No newline at end of file From 7f5f4290abab5a626a3bb892525efab4dde4f8b8 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 15 Sep 2025 11:04:51 +0900 Subject: [PATCH 18/49] =?UTF-8?q?feat=20:=20mvc=20=ED=8C=A8=ED=84=B4=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20-=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20'Application'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/main/java/Application.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java new file mode 100644 index 00000000..b0d6aaba --- /dev/null +++ b/src/main/java/Application.java @@ -0,0 +1,6 @@ +public class Application { + public static void main(String[] args) { + RacingController racingController = new RacingController(); + racingController.run(); + } +} \ No newline at end of file From 630df3ad379a04af33b406ee1787b45b404edbe0 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 15 Sep 2025 18:42:47 +0900 Subject: [PATCH 19/49] =?UTF-8?q?feat=20:=20EOF=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 2 +- src/main/java/Car.java | 8 +++++--- src/main/java/Cars.java | 2 +- src/main/java/InputView.java | 2 +- src/main/java/OutputView.java | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/Application.java b/src/main/java/Application.java index b0d6aaba..befbf497 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -3,4 +3,4 @@ public static void main(String[] args) { RacingController racingController = new RacingController(); racingController.run(); } -} \ No newline at end of file +} diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 52775a96..4fabc031 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,8 +1,10 @@ public class Car { private static final int MOVE_CONDITION = 4; // ์ „์ง„ ์กฐ๊ฑด - private final String name; + private String name; private int position = 0; + + public Car(){} public Car(String name) { this.name = name; } @@ -13,7 +15,7 @@ public void move(int randomNumber) { this.position++; } } - + public String getName() { return name; } @@ -21,4 +23,4 @@ public String getName() { public int getPosition() { return position; } -} \ No newline at end of file +} diff --git a/src/main/java/Cars.java b/src/main/java/Cars.java index acda209a..7826d780 100644 --- a/src/main/java/Cars.java +++ b/src/main/java/Cars.java @@ -61,4 +61,4 @@ private int updateMaxPosition(int currentMax, Car car) { public List getCars() { return Collections.unmodifiableList(cars); } -} \ No newline at end of file +} diff --git a/src/main/java/InputView.java b/src/main/java/InputView.java index e6a17ec0..56bf5011 100644 --- a/src/main/java/InputView.java +++ b/src/main/java/InputView.java @@ -14,4 +14,4 @@ public static int getRaceCount() { scanner.nextLine(); // ๊ฐœํ–‰ ๋ฌธ์ž ์ œ๊ฑฐ return count; } -} \ No newline at end of file +} diff --git a/src/main/java/OutputView.java b/src/main/java/OutputView.java index 362dbdf6..6e0c44ea 100644 --- a/src/main/java/OutputView.java +++ b/src/main/java/OutputView.java @@ -22,4 +22,4 @@ public static void printWinners(List winners) { String winnerNames = String.join(", ", winners); System.out.println("์ตœ์ข… ์šฐ์Šน์ž : " + winnerNames); } -} \ No newline at end of file +} From 22dc5a09dbcae032c76b787a8bca8acdf1578064 Mon Sep 17 00:00:00 2001 From: nonactress Date: Tue, 16 Sep 2025 19:14:03 +0900 Subject: [PATCH 20/49] =?UTF-8?q?feat=20:=20=EC=B2=AB=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 1 + src/main/java/OutputView.java | 1 - src/main/java/RacingController.java | 5 +---- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/Application.java b/src/main/java/Application.java index befbf497..4311e635 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -4,3 +4,4 @@ public static void main(String[] args) { racingController.run(); } } + diff --git a/src/main/java/OutputView.java b/src/main/java/OutputView.java index 6e0c44ea..961a7e32 100644 --- a/src/main/java/OutputView.java +++ b/src/main/java/OutputView.java @@ -1,5 +1,4 @@ import java.util.List; -import java.util.stream.Collectors; public class OutputView { diff --git a/src/main/java/RacingController.java b/src/main/java/RacingController.java index 75cf506f..73754a8f 100644 --- a/src/main/java/RacingController.java +++ b/src/main/java/RacingController.java @@ -1,6 +1,3 @@ - - - public class RacingController { public void run() { // 1. ์ž…๋ ฅ (View) @@ -20,4 +17,4 @@ public void run() { // 4. ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ (Controller -> Model, Controller -> View) OutputView.printWinners(cars.findWinners()); } -} \ No newline at end of file +} From 704cf093e888fe05221b14fc113b8f59333f4ab8 Mon Sep 17 00:00:00 2001 From: nonactress Date: Thu, 18 Sep 2025 09:12:38 +0900 Subject: [PATCH 21/49] =?UTF-8?q?feat=20:=203,4=EB=8B=A8=EA=B3=84=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 7 +++--- src/main/java/Cars.java | 33 ++++++++++----------------- src/main/java/GenerateCarRandom.java | 10 ++++++++ src/main/java/GenerateRandom.java | 3 +++ src/main/java/OutputView.java | 10 +++++--- src/main/java/RacingController.java | 4 ---- src/main/java/TestGenerateRandom.java | 8 +++++++ 7 files changed, 44 insertions(+), 31 deletions(-) create mode 100644 src/main/java/GenerateCarRandom.java create mode 100644 src/main/java/GenerateRandom.java create mode 100644 src/main/java/TestGenerateRandom.java diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 4fabc031..8402253c 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -4,18 +4,19 @@ public class Car { private int position = 0; - public Car(){} + public Car() { + } + public Car(String name) { this.name = name; } - // ์ž๋™์ฐจ์˜ ์ด๋™ ๋กœ์ง. ์™ธ๋ถ€์—์„œ ๋ฐ›์€ ๋žœ๋ค ๊ฐ’์— ๋”ฐ๋ผ ์Šค์Šค๋กœ ์›€์ง์ž…๋‹ˆ๋‹ค. public void move(int randomNumber) { if (randomNumber >= MOVE_CONDITION) { this.position++; } } - + public String getName() { return name; } diff --git a/src/main/java/Cars.java b/src/main/java/Cars.java index 7826d780..c78e4e0f 100644 --- a/src/main/java/Cars.java +++ b/src/main/java/Cars.java @@ -1,11 +1,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Random; public class Cars { private final List cars; - private final Random random = new Random(); + GenerateRandom generateRandom = new GenerateCarRandom(); + //GenerateRandom testGenerateRandom = new TestGenerateRandom(); //๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ฝ”๋“œ public Cars(String[] carNames) { this.cars = new ArrayList<>(); @@ -14,51 +14,42 @@ public Cars(String[] carNames) { } } - // ๋ชจ๋“  ์ž๋™์ฐจ๋ฅผ ํ•œ ๋ผ์šด๋“œ ๋™์•ˆ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค. public void moveAll() { for (Car car : cars) { - car.move(random.nextInt(10)); + car.move(generateRandom.generate()); + //car.move(testGenerateRandom.generate()); } } - // ์šฐ์Šน์ž๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. public List findWinners() { int maxPosition = findMaxPosition(); List winners = new ArrayList<>(); for (Car car : cars) { - // depth 2์— ์žˆ๋˜ if๋ฌธ์„ ๋ฉ”์†Œ๋“œ๋กœ ๋ถ„๋ฆฌ - addWinnerIfPositionMatches(winners, car, maxPosition); + isFindingFirstPizes(winners, car, maxPosition); } return winners; } - // ์šฐ์Šน์ž์ผ ๊ฒฝ์šฐ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋กœ์ง์„ ๋ถ„๋ฆฌํ•œ ๋ฉ”์†Œ๋“œ - private void addWinnerIfPositionMatches(List winners, Car car, int maxPosition) { + private void isFindingFirstPizes(List winners, Car car, int maxPosition) { if (car.getPosition() == maxPosition) { winners.add(car.getName()); } } - // ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์ด๋™ํ•œ ์ž๋™์ฐจ์˜ ์œ„์น˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. private int findMaxPosition() { int maxPosition = 0; for (Car car : cars) { - // depth 2์— ์žˆ๋˜ if๋ฌธ์„ ๋ฉ”์†Œ๋“œ๋กœ ๋ถ„๋ฆฌ - maxPosition = updateMaxPosition(maxPosition, car); + maxPosition = Math.max(car.getPosition(), maxPosition); } return maxPosition; } - // ํ˜„์žฌ ์ตœ๋Œ€ ์œ„์น˜์™€ ์ž๋™์ฐจ์˜ ์œ„์น˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ - private int updateMaxPosition(int currentMax, Car car) { - if (car.getPosition() > currentMax) { - return car.getPosition(); - } - return currentMax; - } - - // View๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Car ๋ฆฌ์ŠคํŠธ์˜ ๋ณต์‚ฌ๋ณธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. public List getCars() { return Collections.unmodifiableList(cars); + + /*return this.cars; + *์œ„ ๋ฐฉ์‹์„ ์•ˆ์“ด ์ด์œ ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋‚˜ ํด๋ž˜์Šค์—์„œ + *์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•ด ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ์ปฌ๋ ‰์…˜ ๋ฉ”์†Œ๋“œ๋กœ ๋ฐ˜ํ™˜๊ฐ’ ์„ค์ • + * */ } } diff --git a/src/main/java/GenerateCarRandom.java b/src/main/java/GenerateCarRandom.java new file mode 100644 index 00000000..a1e3f8bf --- /dev/null +++ b/src/main/java/GenerateCarRandom.java @@ -0,0 +1,10 @@ +import java.util.Random; + +public class GenerateCarRandom implements GenerateRandom { + private Random random = new Random(); + + @Override + public int generate() { + return random.nextInt(10); + } +} diff --git a/src/main/java/GenerateRandom.java b/src/main/java/GenerateRandom.java new file mode 100644 index 00000000..2c7803ae --- /dev/null +++ b/src/main/java/GenerateRandom.java @@ -0,0 +1,3 @@ +public interface GenerateRandom { + int generate(); +} diff --git a/src/main/java/OutputView.java b/src/main/java/OutputView.java index 961a7e32..409250f4 100644 --- a/src/main/java/OutputView.java +++ b/src/main/java/OutputView.java @@ -9,14 +9,18 @@ public static void printResultMessage() { public static void printRoundResult(List cars) { for (Car car : cars) { System.out.print(car.getName() + " : "); - for (int i = 0; i < car.getPosition(); i++) { - System.out.print("-"); - } + printCarPosition(car); System.out.println(); } System.out.println(); } + private static void printCarPosition(Car car) { + for (int i = 0; i < car.getPosition(); i++) { + System.out.print("-"); + } + } + public static void printWinners(List winners) { String winnerNames = String.join(", ", winners); System.out.println("์ตœ์ข… ์šฐ์Šน์ž : " + winnerNames); diff --git a/src/main/java/RacingController.java b/src/main/java/RacingController.java index 73754a8f..9000cfe4 100644 --- a/src/main/java/RacingController.java +++ b/src/main/java/RacingController.java @@ -1,20 +1,16 @@ public class RacingController { public void run() { - // 1. ์ž…๋ ฅ (View) String[] carNames = InputView.getCarNames(); int raceCount = InputView.getRaceCount(); - // 2. ์ƒ์„ฑ (Model) Cars cars = new Cars(carNames); - // 3. ์‹คํ–‰ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ (Controller -> Model, Controller -> View) OutputView.printResultMessage(); for (int i = 0; i < raceCount; i++) { cars.moveAll(); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ OutputView.printRoundResult(cars.getCars()); // View์— ์ถœ๋ ฅ ์š”์ฒญ } - // 4. ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ (Controller -> Model, Controller -> View) OutputView.printWinners(cars.findWinners()); } } diff --git a/src/main/java/TestGenerateRandom.java b/src/main/java/TestGenerateRandom.java new file mode 100644 index 00000000..5acfce5f --- /dev/null +++ b/src/main/java/TestGenerateRandom.java @@ -0,0 +1,8 @@ +public class TestGenerateRandom implements GenerateRandom { + private final int TEST_NUM = 5; + + @Override + public int generate() { + return TEST_NUM; + } +} From c19c73a131dd9b8efb7cff43772f2b45a2bb5b43 Mon Sep 17 00:00:00 2001 From: nonactress Date: Thu, 18 Sep 2025 09:28:53 +0900 Subject: [PATCH 22/49] =?UTF-8?q?feat=20:=20GenerateRandom=EC=9D=98=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EA=B0=92=EC=9D=84=20boolean=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20car=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=97=90=EC=84=9C=20random=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=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/GenerateCarRandom.java | 8 ++++++-- src/main/java/GenerateRandom.java | 3 ++- src/main/java/TestGenerateRandom.java | 7 +++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/GenerateCarRandom.java b/src/main/java/GenerateCarRandom.java index a1e3f8bf..6f528da6 100644 --- a/src/main/java/GenerateCarRandom.java +++ b/src/main/java/GenerateCarRandom.java @@ -4,7 +4,11 @@ public class GenerateCarRandom implements GenerateRandom { private Random random = new Random(); @Override - public int generate() { - return random.nextInt(10); + public boolean generate() { + if (random.nextInt(10) > MOVE_CONDITION) { + return true; + } + return false; + } } diff --git a/src/main/java/GenerateRandom.java b/src/main/java/GenerateRandom.java index 2c7803ae..e5b00524 100644 --- a/src/main/java/GenerateRandom.java +++ b/src/main/java/GenerateRandom.java @@ -1,3 +1,4 @@ public interface GenerateRandom { - int generate(); + static final int MOVE_CONDITION = 4; + boolean generate(); } diff --git a/src/main/java/TestGenerateRandom.java b/src/main/java/TestGenerateRandom.java index 5acfce5f..2e8d3bb9 100644 --- a/src/main/java/TestGenerateRandom.java +++ b/src/main/java/TestGenerateRandom.java @@ -2,7 +2,10 @@ public class TestGenerateRandom implements GenerateRandom { private final int TEST_NUM = 5; @Override - public int generate() { - return TEST_NUM; + public boolean generate() { + if (TEST_NUM > MOVE_CONDITION) { + return true; + } + return false; } } From b608f5b26e42bb75211ecea09a13b31908950950 Mon Sep 17 00:00:00 2001 From: nonactress Date: Thu, 18 Sep 2025 09:31:12 +0900 Subject: [PATCH 23/49] =?UTF-8?q?feat=20:=20GenerateRandom=EC=9D=98=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EA=B0=92=EC=9D=84=20boolean=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20car=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=97=90=EC=84=9C=20random=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EC=A0=9C=EA=B1=B0=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 6 ++---- src/main/java/Cars.java | 12 ++++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 8402253c..878f8176 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,5 +1,5 @@ public class Car { - private static final int MOVE_CONDITION = 4; // ์ „์ง„ ์กฐ๊ฑด + private String name; private int position = 0; @@ -11,10 +11,8 @@ public Car(String name) { this.name = name; } - public void move(int randomNumber) { - if (randomNumber >= MOVE_CONDITION) { + public void move() { this.position++; - } } public String getName() { diff --git a/src/main/java/Cars.java b/src/main/java/Cars.java index c78e4e0f..9b3f33bc 100644 --- a/src/main/java/Cars.java +++ b/src/main/java/Cars.java @@ -16,8 +16,12 @@ public Cars(String[] carNames) { public void moveAll() { for (Car car : cars) { - car.move(generateRandom.generate()); - //car.move(testGenerateRandom.generate()); + if (generateRandom.generate()) { + car.move(); + } +// if (testGenerateRandom.generate()) { +// car.move(); +// } } } @@ -46,9 +50,9 @@ private int findMaxPosition() { public List getCars() { return Collections.unmodifiableList(cars); - + /*return this.cars; - *์œ„ ๋ฐฉ์‹์„ ์•ˆ์“ด ์ด์œ ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋‚˜ ํด๋ž˜์Šค์—์„œ + *์œ„ ๋ฐฉ์‹์„ ์•ˆ์“ด ์ด์œ ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋‚˜ ํด๋ž˜์Šค์—์„œ *์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•ด ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ์ปฌ๋ ‰์…˜ ๋ฉ”์†Œ๋“œ๋กœ ๋ฐ˜ํ™˜๊ฐ’ ์„ค์ • * */ } From b4711113af29b36fd46c87195beb07ba7e469476 Mon Sep 17 00:00:00 2001 From: nonactress Date: Thu, 18 Sep 2025 09:32:31 +0900 Subject: [PATCH 24/49] =?UTF-8?q?feat=20:=20cars=EC=97=90=20moveAll?= =?UTF-8?q?=EC=9D=84=20move=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/Cars.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/Cars.java b/src/main/java/Cars.java index 9b3f33bc..97cf0de0 100644 --- a/src/main/java/Cars.java +++ b/src/main/java/Cars.java @@ -16,15 +16,19 @@ public Cars(String[] carNames) { public void moveAll() { for (Car car : cars) { - if (generateRandom.generate()) { - car.move(); - } -// if (testGenerateRandom.generate()) { -// car.move(); -// } + move(car); } } + private void move(Car car) { + if (generateRandom.generate()) { + car.move(); + } +// if (testGenerateRandom.generate()) { +// car.move(); +// } + } + public List findWinners() { int maxPosition = findMaxPosition(); List winners = new ArrayList<>(); From cd70b8ab8e4f48bd933dc995df58c94a65772d49 Mon Sep 17 00:00:00 2001 From: nonactress Date: Thu, 18 Sep 2025 12:47:47 +0900 Subject: [PATCH 25/49] feat : new function 'isValid' in InputView --- src/main/java/InputView.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/InputView.java b/src/main/java/InputView.java index 56bf5011..cd4b1905 100644 --- a/src/main/java/InputView.java +++ b/src/main/java/InputView.java @@ -5,7 +5,8 @@ public class InputView { public static String[] getCarNames() { System.out.println("๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์ด๋ฆ„์€ ์‰ผํ‘œ(,) ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„)"); - return scanner.nextLine().split(","); + String[] splitCar = scanner.nextLine().split(","); + return splitCar; } public static int getRaceCount() { @@ -14,4 +15,19 @@ public static int getRaceCount() { scanner.nextLine(); // ๊ฐœํ–‰ ๋ฌธ์ž ์ œ๊ฑฐ return count; } + + public static boolean isValid(String [] cars){ + if(cars.length == 1 ){ + System.out.println("ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ž๋™์ฐจ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”!"); + return false; + } + for (String car : cars) { + if(car.trim().isEmpty()) + { + System.out.println("์ž๋™์ฐจ์˜ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์ผ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค!"); + return false; + } + } + return true; + } } From 66e64b6f6bcb62712cabe21299abf7d30f50ac3a Mon Sep 17 00:00:00 2001 From: westnowjin <101540598+nonactress@users.noreply.github.com> Date: Thu, 18 Sep 2025 19:12:24 +0900 Subject: [PATCH 26/49] Delete src/main/java/CarMain.java --- src/main/java/CarMain.java | 50 -------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 src/main/java/CarMain.java diff --git a/src/main/java/CarMain.java b/src/main/java/CarMain.java deleted file mode 100644 index e53fd343..00000000 --- a/src/main/java/CarMain.java +++ /dev/null @@ -1,50 +0,0 @@ - -import java.util.Scanner; - -public class CarMain { - // public int maxIndex(int[] arr,int max) - - public static void main(String[] args) { - - - - showFrowardCnt(cars,carNum); - - System.out.print("์šฐ์Šนํ•œ car : "); - - for(int i=0;i Date: Thu, 18 Sep 2025 19:13:43 +0900 Subject: [PATCH 27/49] Delete src/main/java/Race.java --- src/main/java/Race.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/main/java/Race.java diff --git a/src/main/java/Race.java b/src/main/java/Race.java deleted file mode 100644 index 85363be8..00000000 --- a/src/main/java/Race.java +++ /dev/null @@ -1,5 +0,0 @@ -public class Race { - public static void main(String[] args) { - RaceWinner raceWinner = new RaceWinner(); - } -} From 4f1b377ee592a9021ba5fd1e35cdd0c77d46efe4 Mon Sep 17 00:00:00 2001 From: westnowjin <101540598+nonactress@users.noreply.github.com> Date: Thu, 18 Sep 2025 19:13:58 +0900 Subject: [PATCH 28/49] Delete src/main/java/RaceSetting.java --- src/main/java/RaceSetting.java | 63 ---------------------------------- 1 file changed, 63 deletions(-) delete mode 100644 src/main/java/RaceSetting.java diff --git a/src/main/java/RaceSetting.java b/src/main/java/RaceSetting.java deleted file mode 100644 index c20297ac..00000000 --- a/src/main/java/RaceSetting.java +++ /dev/null @@ -1,63 +0,0 @@ -import java.util.Scanner; -import java.util.Random; - -public class RaceSetting { - protected Car[] cars; - protected int carNum; - protected int raceNum; - private static final int MINIMUM_SPEED_TO_MOVE = 4; - - Random random = new Random(); - - - public void setCarNum(Scanner scanner) { - System.out.println("์ถœ์ „ํ•œ ์ž๋™์ฐจ ์ˆ˜: "); - this.carNum = scanner.nextInt(); - } - - private void setRaceNum(Scanner scanner) { - System.out.println("๋ช‡ ๋ฒˆ ๋‹ฌ๋ฆด๊บผ์•ผ: "); - this.raceNum = scanner.nextInt(); - } - - public void createCars(Scanner scanner) { - this.cars = new Car[carNum]; - for (int i = 0; i < carNum; i++) { - System.out.println((i + 1) + "๋ฒˆ ์ž๋™์ฐจ ์ด๋ฆ„ : "); - String temp = scanner.next(); - cars[i] = new Car(); - cars[i].setName(temp); - } - } - - public void runRace() { - for (int i = 0; i < raceNum; i++) { - { - checkSpeedTOMove(); - } - } - } - - void checkSpeedTOMove() { - for (Car car : cars) { - isOverMinToMove(car); - } - - } - - private void isOverMinToMove(Car temp) { - if (random.nextInt(10) > MINIMUM_SPEED_TO_MOVE) { - temp.upmoveCnt(); - } - } - - - RaceSetting() { - Scanner scanner = new Scanner(System.in); - setCarNum(scanner); - setRaceNum(scanner); - createCars(scanner); - runRace(); - scanner.close(); - } -} From ced10920be2f19c5d8b33d902ba79e26a1f672cb Mon Sep 17 00:00:00 2001 From: westnowjin <101540598+nonactress@users.noreply.github.com> Date: Thu, 18 Sep 2025 19:14:49 +0900 Subject: [PATCH 29/49] Delete src/main/java/RaceWinner.java --- src/main/java/RaceWinner.java | 42 ----------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 src/main/java/RaceWinner.java diff --git a/src/main/java/RaceWinner.java b/src/main/java/RaceWinner.java deleted file mode 100644 index 5b4a99e9..00000000 --- a/src/main/java/RaceWinner.java +++ /dev/null @@ -1,42 +0,0 @@ -public class RaceWinner extends RaceSetting { - int winnerCnt = -1; - - RaceWinner() { - super(); - findWinnerCnt(); - printAllCarMove(); - printWinner(); - } - - void printAllCarMove() { - for (Car car : cars) { - System.out.println("์ด๋ฆ„ : " + car.getName() + " Move: " + car.getmoveCnt()); - } - } - - void findWinnerCnt() // - { - for (Car car : cars) { - setWinnerCnt(car); - } - } - - private void setWinnerCnt(Car car) { - if (winnerCnt < car.getmoveCnt()) { - winnerCnt = car.getmoveCnt(); - } - } - - void printWinner() { - System.out.println("์šฐ์Šน : "); - for (Car car : cars) { - setWinnerCar(car); - } - } - - private void setWinnerCar(Car car) { - if (winnerCnt == car.getmoveCnt()) { - System.out.println(car.getName()); - } - } -} From fd0a317ff430e3ec7f4f738242b0099fdd55e2c9 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 19 Sep 2025 10:14:58 +0900 Subject: [PATCH 30/49] feat : generate package --- src/main/java/.gitkeep | 0 src/main/java/RaceWinner.java | 42 ------------------- .../java/{ => controller}/Application.java | 2 + .../{ => controller}/RacingController.java | 6 +++ src/main/java/{ => model}/Car.java | 2 + src/main/java/{ => model}/Cars.java | 6 ++- .../{ => model/random}/GenerateCarRandom.java | 5 ++- .../{ => model/random}/GenerateRandom.java | 2 + .../random}/TestGenerateRandom.java | 2 + src/main/java/{ => view}/InputView.java | 2 + src/main/java/{ => view}/OutputView.java | 4 ++ 11 files changed, 29 insertions(+), 44 deletions(-) delete mode 100644 src/main/java/.gitkeep delete mode 100644 src/main/java/RaceWinner.java rename src/main/java/{ => controller}/Application.java (89%) rename src/main/java/{ => controller}/RacingController.java (85%) rename src/main/java/{ => model}/Car.java (95%) rename src/main/java/{ => model}/Cars.java (88%) rename src/main/java/{ => model/random}/GenerateCarRandom.java (65%) rename src/main/java/{ => model/random}/GenerateRandom.java (81%) rename src/main/java/{ => model/random}/TestGenerateRandom.java (91%) rename src/main/java/{ => view}/InputView.java (98%) rename src/main/java/{ => view}/OutputView.java (95%) diff --git a/src/main/java/.gitkeep b/src/main/java/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/main/java/RaceWinner.java b/src/main/java/RaceWinner.java deleted file mode 100644 index 5b4a99e9..00000000 --- a/src/main/java/RaceWinner.java +++ /dev/null @@ -1,42 +0,0 @@ -public class RaceWinner extends RaceSetting { - int winnerCnt = -1; - - RaceWinner() { - super(); - findWinnerCnt(); - printAllCarMove(); - printWinner(); - } - - void printAllCarMove() { - for (Car car : cars) { - System.out.println("์ด๋ฆ„ : " + car.getName() + " Move: " + car.getmoveCnt()); - } - } - - void findWinnerCnt() // - { - for (Car car : cars) { - setWinnerCnt(car); - } - } - - private void setWinnerCnt(Car car) { - if (winnerCnt < car.getmoveCnt()) { - winnerCnt = car.getmoveCnt(); - } - } - - void printWinner() { - System.out.println("์šฐ์Šน : "); - for (Car car : cars) { - setWinnerCar(car); - } - } - - private void setWinnerCar(Car car) { - if (winnerCnt == car.getmoveCnt()) { - System.out.println(car.getName()); - } - } -} diff --git a/src/main/java/Application.java b/src/main/java/controller/Application.java similarity index 89% rename from src/main/java/Application.java rename to src/main/java/controller/Application.java index 4311e635..9bc0541e 100644 --- a/src/main/java/Application.java +++ b/src/main/java/controller/Application.java @@ -1,3 +1,5 @@ +package controller; + public class Application { public static void main(String[] args) { RacingController racingController = new RacingController(); diff --git a/src/main/java/RacingController.java b/src/main/java/controller/RacingController.java similarity index 85% rename from src/main/java/RacingController.java rename to src/main/java/controller/RacingController.java index 9000cfe4..b1d21544 100644 --- a/src/main/java/RacingController.java +++ b/src/main/java/controller/RacingController.java @@ -1,3 +1,9 @@ +package controller; + +import model.Cars; +import view.InputView; +import view.OutputView; + public class RacingController { public void run() { String[] carNames = InputView.getCarNames(); diff --git a/src/main/java/Car.java b/src/main/java/model/Car.java similarity index 95% rename from src/main/java/Car.java rename to src/main/java/model/Car.java index 878f8176..d6433ec0 100644 --- a/src/main/java/Car.java +++ b/src/main/java/model/Car.java @@ -1,3 +1,5 @@ +package model; + public class Car { private String name; diff --git a/src/main/java/Cars.java b/src/main/java/model/Cars.java similarity index 88% rename from src/main/java/Cars.java rename to src/main/java/model/Cars.java index 97cf0de0..73236b02 100644 --- a/src/main/java/Cars.java +++ b/src/main/java/model/Cars.java @@ -1,11 +1,15 @@ +package model; + import java.util.ArrayList; import java.util.Collections; import java.util.List; +import model.random.GenerateCarRandom; +import model.random.GenerateRandom; public class Cars { private final List cars; GenerateRandom generateRandom = new GenerateCarRandom(); - //GenerateRandom testGenerateRandom = new TestGenerateRandom(); //๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ฝ”๋“œ + //model.random.GenerateRandom testGenerateRandom = new model.random.TestGenerateRandom(); //๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ฝ”๋“œ public Cars(String[] carNames) { this.cars = new ArrayList<>(); diff --git a/src/main/java/GenerateCarRandom.java b/src/main/java/model/random/GenerateCarRandom.java similarity index 65% rename from src/main/java/GenerateCarRandom.java rename to src/main/java/model/random/GenerateCarRandom.java index 6f528da6..86b57427 100644 --- a/src/main/java/GenerateCarRandom.java +++ b/src/main/java/model/random/GenerateCarRandom.java @@ -1,11 +1,14 @@ +package model.random; + import java.util.Random; +import model.random.GenerateCarRandom; public class GenerateCarRandom implements GenerateRandom { private Random random = new Random(); @Override public boolean generate() { - if (random.nextInt(10) > MOVE_CONDITION) { + if (random.nextInt(10) > GenerateRandom.MOVE_CONDITION) { return true; } return false; diff --git a/src/main/java/GenerateRandom.java b/src/main/java/model/random/GenerateRandom.java similarity index 81% rename from src/main/java/GenerateRandom.java rename to src/main/java/model/random/GenerateRandom.java index e5b00524..9ccfc8ce 100644 --- a/src/main/java/GenerateRandom.java +++ b/src/main/java/model/random/GenerateRandom.java @@ -1,3 +1,5 @@ +package model.random; + public interface GenerateRandom { static final int MOVE_CONDITION = 4; boolean generate(); diff --git a/src/main/java/TestGenerateRandom.java b/src/main/java/model/random/TestGenerateRandom.java similarity index 91% rename from src/main/java/TestGenerateRandom.java rename to src/main/java/model/random/TestGenerateRandom.java index 2e8d3bb9..8b872d02 100644 --- a/src/main/java/TestGenerateRandom.java +++ b/src/main/java/model/random/TestGenerateRandom.java @@ -1,3 +1,5 @@ +package model.random; + public class TestGenerateRandom implements GenerateRandom { private final int TEST_NUM = 5; diff --git a/src/main/java/InputView.java b/src/main/java/view/InputView.java similarity index 98% rename from src/main/java/InputView.java rename to src/main/java/view/InputView.java index cd4b1905..182664b7 100644 --- a/src/main/java/InputView.java +++ b/src/main/java/view/InputView.java @@ -1,3 +1,5 @@ +package view; + import java.util.Scanner; public class InputView { diff --git a/src/main/java/OutputView.java b/src/main/java/view/OutputView.java similarity index 95% rename from src/main/java/OutputView.java rename to src/main/java/view/OutputView.java index 409250f4..c047b03b 100644 --- a/src/main/java/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -1,3 +1,7 @@ +package view; + +import model.Car; + import java.util.List; public class OutputView { From 76330fc0b5c5cf5ff6fafcfc656a5bf890fb38b2 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 19 Sep 2025 11:09:39 +0900 Subject: [PATCH 31/49] =?UTF-8?q?=20=EA=B9=83=20=EC=9E=91=EB=8F=99=20?= =?UTF-8?q?=EC=97=AC=EB=B6=80=20=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 22 ------------ src/main/java/CarMain.java | 50 --------------------------- src/main/java/Race.java | 5 --- src/main/java/RaceSetting.java | 63 ---------------------------------- 4 files changed, 140 deletions(-) delete mode 100644 src/main/java/CarMain.java delete mode 100644 src/main/java/Race.java delete mode 100644 src/main/java/RaceSetting.java diff --git a/README.md b/README.md index cdf4b4ef..e69de29b 100644 --- a/README.md +++ b/README.md @@ -1,22 +0,0 @@ - ---- -## ์ž‘๋™ ๋ฐฉ์‹ - -์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค: - -1. **์ž๋™์ฐจ ์ˆ˜:** ๊ฒฝ์ฃผ์— ์ฐธ๊ฐ€ํ•  ์ž๋™์ฐจ์˜ ์ˆ˜ -2. **๋ผ์šด๋“œ ์ˆ˜:** ๊ฒฝ์ฃผ๊ฐ€ ์ง€์†๋  ๋ผ์šด๋“œ ์ˆ˜ -3. **์ž๋™์ฐจ ์ด๋ฆ„:** ๊ฐ ์ž๋™์ฐจ์˜ ์ด๋ฆ„ - -ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒฝ์ฃผ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ผ์šด๋“œ๋งˆ๋‹ค ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. -0๋ถ€ํ„ฐ 9 ์‚ฌ์ด์—์„œ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ์ˆซ์ž๊ฐ€ 4๋ณด๋‹ค ํฌ๋ฉด ์ž๋™์ฐจ๋Š” ์ „์ง„ํ•ฉ๋‹ˆ๋‹ค. -๊ฒฝ์ฃผ๊ฐ€ ๋๋‚˜๋ฉด ๊ฐ ์ž๋™์ฐจ๊ฐ€ ์ด๋™ํ•œ ์ด ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์šฐ์Šน์ž(๋“ค)๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. - -## ํด๋ž˜์Šค ์„ค๋ช… - -* **`Car.java`**: ์ด๋ฆ„๊ณผ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ž๋™์ฐจ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. -* **`RaceSetting.java`**: ๊ฒฝ์ฃผ๋ฅผ ์„ค์ •ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ ์ˆ˜, ๋ผ์šด๋“œ ์ˆ˜, ์ž๋™์ฐจ ์ด๋ฆ„์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฒฝ์ฃผ ์‹คํ–‰๊ณผ ์ž๋™์ฐจ ์ด๋™์— ๊ด€ํ•œ ๋กœ์ง์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. -* **`RaceWinner.java`**: ์ด ํด๋ž˜์Šค๋Š” `RaceSetting`์„ ํ™•์žฅํ•˜๋ฉฐ ๊ฒฝ์ฃผ์˜ ์šฐ์Šน์ž๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์ด๋™ํ•œ ์ž๋™์ฐจ๋ฅผ ์ฐพ์•„ ๊ทธ ์ด๋ฆ„์„ ์šฐ์Šน์ž๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. -* **`Race.java`**: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. ๊ฒฝ์ฃผ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด `RaceWinner`์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. - ---- diff --git a/src/main/java/CarMain.java b/src/main/java/CarMain.java deleted file mode 100644 index e53fd343..00000000 --- a/src/main/java/CarMain.java +++ /dev/null @@ -1,50 +0,0 @@ - -import java.util.Scanner; - -public class CarMain { - // public int maxIndex(int[] arr,int max) - - public static void main(String[] args) { - - - - showFrowardCnt(cars,carNum); - - System.out.print("์šฐ์Šนํ•œ car : "); - - for(int i=0;i MINIMUM_SPEED_TO_MOVE) { - temp.upmoveCnt(); - } - } - - - RaceSetting() { - Scanner scanner = new Scanner(System.in); - setCarNum(scanner); - setRaceNum(scanner); - createCars(scanner); - runRace(); - scanner.close(); - } -} From 03ef92953a81287b3bab969359aec10f6dccddb6 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 19 Sep 2025 11:20:08 +0900 Subject: [PATCH 32/49] refactor(random): Improve name of random generation logic --- .../random/{TestGenerateRandom.java => AlwaysMoveStub.java} | 2 +- .../random/{GenerateRandom.java => RandomGenerater.java} | 3 ++- .../{GenerateCarRandom.java => RandomMoveStrategy.java} | 5 ++--- 3 files changed, 5 insertions(+), 5 deletions(-) rename src/main/java/model/random/{TestGenerateRandom.java => AlwaysMoveStub.java} (77%) rename src/main/java/model/random/{GenerateRandom.java => RandomGenerater.java} (71%) rename src/main/java/model/random/{GenerateCarRandom.java => RandomMoveStrategy.java} (55%) diff --git a/src/main/java/model/random/TestGenerateRandom.java b/src/main/java/model/random/AlwaysMoveStub.java similarity index 77% rename from src/main/java/model/random/TestGenerateRandom.java rename to src/main/java/model/random/AlwaysMoveStub.java index 8b872d02..b79f2821 100644 --- a/src/main/java/model/random/TestGenerateRandom.java +++ b/src/main/java/model/random/AlwaysMoveStub.java @@ -1,6 +1,6 @@ package model.random; -public class TestGenerateRandom implements GenerateRandom { +public class AlwaysMoveStub implements RandomGenerater { private final int TEST_NUM = 5; @Override diff --git a/src/main/java/model/random/GenerateRandom.java b/src/main/java/model/random/RandomGenerater.java similarity index 71% rename from src/main/java/model/random/GenerateRandom.java rename to src/main/java/model/random/RandomGenerater.java index 9ccfc8ce..040a157a 100644 --- a/src/main/java/model/random/GenerateRandom.java +++ b/src/main/java/model/random/RandomGenerater.java @@ -1,6 +1,7 @@ package model.random; -public interface GenerateRandom { +public interface RandomGenerater { static final int MOVE_CONDITION = 4; + boolean generate(); } diff --git a/src/main/java/model/random/GenerateCarRandom.java b/src/main/java/model/random/RandomMoveStrategy.java similarity index 55% rename from src/main/java/model/random/GenerateCarRandom.java rename to src/main/java/model/random/RandomMoveStrategy.java index 86b57427..caa6c208 100644 --- a/src/main/java/model/random/GenerateCarRandom.java +++ b/src/main/java/model/random/RandomMoveStrategy.java @@ -1,14 +1,13 @@ package model.random; import java.util.Random; -import model.random.GenerateCarRandom; -public class GenerateCarRandom implements GenerateRandom { +public class RandomMoveStrategy implements RandomGenerater { private Random random = new Random(); @Override public boolean generate() { - if (random.nextInt(10) > GenerateRandom.MOVE_CONDITION) { + if (random.nextInt(10) > RandomGenerater.MOVE_CONDITION) { return true; } return false; From 3e1224013d3927eae6df4e2811be5b0448177d9b Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 19 Sep 2025 11:44:37 +0900 Subject: [PATCH 33/49] refactor(random): making 'RacingService'and refactoring 'RacingController' --- src/main/java/controller/RacingController.java | 5 +---- .../{Application.java => RacingGame.java} | 2 +- src/main/java/controller/RacingService.java | 13 +++++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) rename src/main/java/controller/{Application.java => RacingGame.java} (86%) create mode 100644 src/main/java/controller/RacingService.java diff --git a/src/main/java/controller/RacingController.java b/src/main/java/controller/RacingController.java index b1d21544..58cba748 100644 --- a/src/main/java/controller/RacingController.java +++ b/src/main/java/controller/RacingController.java @@ -12,10 +12,7 @@ public void run() { Cars cars = new Cars(carNames); OutputView.printResultMessage(); - for (int i = 0; i < raceCount; i++) { - cars.moveAll(); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ - OutputView.printRoundResult(cars.getCars()); // View์— ์ถœ๋ ฅ ์š”์ฒญ - } + new RacingService(cars,raceCount); OutputView.printWinners(cars.findWinners()); } diff --git a/src/main/java/controller/Application.java b/src/main/java/controller/RacingGame.java similarity index 86% rename from src/main/java/controller/Application.java rename to src/main/java/controller/RacingGame.java index 9bc0541e..1517e12e 100644 --- a/src/main/java/controller/Application.java +++ b/src/main/java/controller/RacingGame.java @@ -1,6 +1,6 @@ package controller; -public class Application { +public class RacingGame { public static void main(String[] args) { RacingController racingController = new RacingController(); racingController.run(); diff --git a/src/main/java/controller/RacingService.java b/src/main/java/controller/RacingService.java new file mode 100644 index 00000000..c2f765ba --- /dev/null +++ b/src/main/java/controller/RacingService.java @@ -0,0 +1,13 @@ +package controller; +import model.Cars; +import view.OutputView; + +public class RacingService { + public RacingService(Cars cars, int raceCount) { + for(int i=0;i Date: Fri, 19 Sep 2025 11:47:40 +0900 Subject: [PATCH 34/49] refactor(controller): making 'RacingService'and refactoring 'RacingController' 2 --- src/main/java/controller/RacingController.java | 3 ++- src/main/java/controller/RacingService.java | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/controller/RacingController.java b/src/main/java/controller/RacingController.java index 58cba748..bf284541 100644 --- a/src/main/java/controller/RacingController.java +++ b/src/main/java/controller/RacingController.java @@ -12,7 +12,8 @@ public void run() { Cars cars = new Cars(carNames); OutputView.printResultMessage(); - new RacingService(cars,raceCount); + RacingService racingService = new RacingService(); + racingService.startRace(cars, raceCount); OutputView.printWinners(cars.findWinners()); } diff --git a/src/main/java/controller/RacingService.java b/src/main/java/controller/RacingService.java index c2f765ba..1366d766 100644 --- a/src/main/java/controller/RacingService.java +++ b/src/main/java/controller/RacingService.java @@ -1,11 +1,11 @@ package controller; + import model.Cars; import view.OutputView; public class RacingService { - public RacingService(Cars cars, int raceCount) { - for(int i=0;i Date: Fri, 19 Sep 2025 12:09:17 +0900 Subject: [PATCH 35/49] refactor(model): constructor 'car' delete --- src/main/java/model/Car.java | 8 ++------ src/main/java/model/Cars.java | 6 +++--- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java index d6433ec0..13916f42 100644 --- a/src/main/java/model/Car.java +++ b/src/main/java/model/Car.java @@ -5,16 +5,12 @@ public class Car { private String name; private int position = 0; - - public Car() { - } - public Car(String name) { - this.name = name; + this.name = naAme; } public void move() { - this.position++; + this.position++; } public String getName() { diff --git a/src/main/java/model/Cars.java b/src/main/java/model/Cars.java index 73236b02..16f8742a 100644 --- a/src/main/java/model/Cars.java +++ b/src/main/java/model/Cars.java @@ -3,12 +3,12 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import model.random.GenerateCarRandom; -import model.random.GenerateRandom; +import model.random.RandomMoveStrategy; +import model.random.RandomGenerater; public class Cars { private final List cars; - GenerateRandom generateRandom = new GenerateCarRandom(); + RandomGenerater generateRandom = new RandomMoveStrategy(); //model.random.GenerateRandom testGenerateRandom = new model.random.TestGenerateRandom(); //๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ฝ”๋“œ public Cars(String[] carNames) { From fb563cefb9d1b462147ae1fdea9e1889f0816d47 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 19 Sep 2025 12:16:19 +0900 Subject: [PATCH 36/49] refactor(model): 'isFindingFirstPizes'changes to 'checkAndAddWinner' --- src/main/java/model/Car.java | 2 +- src/main/java/model/Cars.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java index 13916f42..35537d47 100644 --- a/src/main/java/model/Car.java +++ b/src/main/java/model/Car.java @@ -6,7 +6,7 @@ public class Car { private int position = 0; public Car(String name) { - this.name = naAme; + this.name = name; } public void move() { diff --git a/src/main/java/model/Cars.java b/src/main/java/model/Cars.java index 16f8742a..4af7b160 100644 --- a/src/main/java/model/Cars.java +++ b/src/main/java/model/Cars.java @@ -37,12 +37,12 @@ public List findWinners() { int maxPosition = findMaxPosition(); List winners = new ArrayList<>(); for (Car car : cars) { - isFindingFirstPizes(winners, car, maxPosition); + checkAndAddWinner(winners, car, maxPosition); } return winners; } - private void isFindingFirstPizes(List winners, Car car, int maxPosition) { + private void checkAndAddWinner(List winners, Car car, int maxPosition) { if (car.getPosition() == maxPosition) { winners.add(car.getName()); } From 482cf135ce28424459b2d48b63d7ead01b11b814 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 19 Sep 2025 12:32:09 +0900 Subject: [PATCH 37/49] refactor(view): method 'PrintCarPostion' rogic --- src/main/java/view/OutputView.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index c047b03b..64a37259 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -20,9 +20,7 @@ public static void printRoundResult(List cars) { } private static void printCarPosition(Car car) { - for (int i = 0; i < car.getPosition(); i++) { - System.out.print("-"); - } + System.out.print("-".repeat(car.getPosition())); } public static void printWinners(List winners) { From ad763d89cf364ed605a029b7dce7017aa19f9883 Mon Sep 17 00:00:00 2001 From: nonactress Date: Fri, 19 Sep 2025 17:42:57 +0900 Subject: [PATCH 38/49] refactor(input): method 'getCarNames' rogic --- src/main/java/view/InputView.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 182664b7..00761d4e 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -8,7 +8,14 @@ public class InputView { public static String[] getCarNames() { System.out.println("๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์ด๋ฆ„์€ ์‰ผํ‘œ(,) ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„)"); String[] splitCar = scanner.nextLine().split(","); - return splitCar; + while(true) + { + if(isValid(splitCar)){ + return splitCar; + } + splitCar = scanner.nextLine().split(","); + } + } public static int getRaceCount() { @@ -23,6 +30,7 @@ public static boolean isValid(String [] cars){ System.out.println("ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ž๋™์ฐจ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”!"); return false; } + for (String car : cars) { if(car.trim().isEmpty()) { From cab4c5f9e4ae97f066d1b43c8cba1c079dac0714 Mon Sep 17 00:00:00 2001 From: nonactress Date: Sat, 20 Sep 2025 12:24:01 +0900 Subject: [PATCH 39/49] refactor(input): renaming about Random package --- src/main/java/{controller => }/RacingGame.java | 2 +- src/main/java/model/Car.java | 2 +- src/main/java/model/Cars.java | 4 ++-- .../random/{AlwaysMoveStub.java => FixedNumberMoveStub.java} | 2 +- .../random/{RandomGenerater.java => RandomGenerator.java} | 2 +- src/main/java/model/random/RandomMoveStrategy.java | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) rename src/main/java/{controller => }/RacingGame.java (83%) rename src/main/java/model/random/{AlwaysMoveStub.java => FixedNumberMoveStub.java} (77%) rename src/main/java/model/random/{RandomGenerater.java => RandomGenerator.java} (72%) diff --git a/src/main/java/controller/RacingGame.java b/src/main/java/RacingGame.java similarity index 83% rename from src/main/java/controller/RacingGame.java rename to src/main/java/RacingGame.java index 1517e12e..9f68372f 100644 --- a/src/main/java/controller/RacingGame.java +++ b/src/main/java/RacingGame.java @@ -1,4 +1,4 @@ -package controller; +import controller.RacingController; public class RacingGame { public static void main(String[] args) { diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java index 35537d47..5ccad8a0 100644 --- a/src/main/java/model/Car.java +++ b/src/main/java/model/Car.java @@ -2,7 +2,7 @@ public class Car { - private String name; + private final String name; private int position = 0; public Car(String name) { diff --git a/src/main/java/model/Cars.java b/src/main/java/model/Cars.java index 4af7b160..ab730f87 100644 --- a/src/main/java/model/Cars.java +++ b/src/main/java/model/Cars.java @@ -4,11 +4,11 @@ import java.util.Collections; import java.util.List; import model.random.RandomMoveStrategy; -import model.random.RandomGenerater; +import model.random.RandomGenerator; public class Cars { private final List cars; - RandomGenerater generateRandom = new RandomMoveStrategy(); + RandomGenerator generateRandom = new RandomMoveStrategy(); //model.random.GenerateRandom testGenerateRandom = new model.random.TestGenerateRandom(); //๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ฝ”๋“œ public Cars(String[] carNames) { diff --git a/src/main/java/model/random/AlwaysMoveStub.java b/src/main/java/model/random/FixedNumberMoveStub.java similarity index 77% rename from src/main/java/model/random/AlwaysMoveStub.java rename to src/main/java/model/random/FixedNumberMoveStub.java index b79f2821..bd8fcbae 100644 --- a/src/main/java/model/random/AlwaysMoveStub.java +++ b/src/main/java/model/random/FixedNumberMoveStub.java @@ -1,6 +1,6 @@ package model.random; -public class AlwaysMoveStub implements RandomGenerater { +public class FixedNumberMoveStub implements RandomGenerator { private final int TEST_NUM = 5; @Override diff --git a/src/main/java/model/random/RandomGenerater.java b/src/main/java/model/random/RandomGenerator.java similarity index 72% rename from src/main/java/model/random/RandomGenerater.java rename to src/main/java/model/random/RandomGenerator.java index 040a157a..eae1298f 100644 --- a/src/main/java/model/random/RandomGenerater.java +++ b/src/main/java/model/random/RandomGenerator.java @@ -1,6 +1,6 @@ package model.random; -public interface RandomGenerater { +public interface RandomGenerator { static final int MOVE_CONDITION = 4; boolean generate(); diff --git a/src/main/java/model/random/RandomMoveStrategy.java b/src/main/java/model/random/RandomMoveStrategy.java index caa6c208..d3b29469 100644 --- a/src/main/java/model/random/RandomMoveStrategy.java +++ b/src/main/java/model/random/RandomMoveStrategy.java @@ -2,12 +2,12 @@ import java.util.Random; -public class RandomMoveStrategy implements RandomGenerater { +public class RandomMoveStrategy implements RandomGenerator { private Random random = new Random(); @Override public boolean generate() { - if (random.nextInt(10) > RandomGenerater.MOVE_CONDITION) { + if (random.nextInt(10) > RandomGenerator.MOVE_CONDITION) { return true; } return false; From b16067639e2848a2dab66e81242da078df592261 Mon Sep 17 00:00:00 2001 From: nonactress Date: Sat, 20 Sep 2025 14:01:53 +0900 Subject: [PATCH 40/49] feat : RandomMoveStrategyTest --- .../java/controller/RacingControllerTest.java | 4 ++ src/test/java/model/CarTest.java | 51 +++++++++++++++++++ .../model/random/RandomMoveStrategyTest.java | 20 ++++++++ 3 files changed, 75 insertions(+) create mode 100644 src/test/java/controller/RacingControllerTest.java create mode 100644 src/test/java/model/CarTest.java create mode 100644 src/test/java/model/random/RandomMoveStrategyTest.java diff --git a/src/test/java/controller/RacingControllerTest.java b/src/test/java/controller/RacingControllerTest.java new file mode 100644 index 00000000..39e8fe5f --- /dev/null +++ b/src/test/java/controller/RacingControllerTest.java @@ -0,0 +1,4 @@ +package controller; + +public class RacingControllerTest { +} diff --git a/src/test/java/model/CarTest.java b/src/test/java/model/CarTest.java new file mode 100644 index 00000000..db6a162b --- /dev/null +++ b/src/test/java/model/CarTest.java @@ -0,0 +1,51 @@ +package model; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class CarTest { + + @Test + @DisplayName("์ž๋™์ฐจ ์ƒ์„ฑ ์‹œ ์ด๋ฆ„๊ณผ ์ดˆ๊ธฐ ์œ„์น˜(0)๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•œ๋‹ค.") + void createCar() { + // given: "pobi"๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž๋™์ฐจ๋ฅผ ์ค€๋น„ํ•˜๊ณ  + String carName = "pobi"; + + // when: ํ•ด๋‹น ์ด๋ฆ„์œผ๋กœ ์ž๋™์ฐจ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด + Car car = new Car(carName); + + // then: ์ด๋ฆ„์€ "pobi"์ด๊ณ  ์œ„์น˜๋Š” 0์ด์–ด์•ผ ํ•œ๋‹ค. + assertEquals(carName, car.getName()); + assertEquals(0, car.getPosition()); + } + + @Test + @DisplayName("move ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์œ„์น˜๊ฐ€ 1 ์ฆ๊ฐ€ํ•œ๋‹ค.") + void moveCar() { + // given: "woni"๋ผ๋Š” ์ด๋ฆ„์˜ ์ž๋™์ฐจ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  + Car car = new Car("woni"); + + // when: move ๋ฉ”์„œ๋“œ๋ฅผ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด + car.move(); + + // then: ์ž๋™์ฐจ์˜ ์œ„์น˜๋Š” 1์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. + assertEquals(1, car.getPosition()); + } + + @Test + @DisplayName("move ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ํ˜ธ์ถœํ•œ ํšŸ์ˆ˜๋งŒํผ ์œ„์น˜๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค.") + void moveCarMultipleTimes() { + // given: "jun"์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ž๋™์ฐจ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  + Car car = new Car("jun"); + int moveCount = 5; + + // when: move ๋ฉ”์„œ๋“œ๋ฅผ 5๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด + for (int i = 0; i < moveCount; i++) { + car.move(); + } + + // then: ์ž๋™์ฐจ์˜ ์œ„์น˜๋Š” 5๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. + assertEquals(moveCount, car.getPosition()); + } +} diff --git a/src/test/java/model/random/RandomMoveStrategyTest.java b/src/test/java/model/random/RandomMoveStrategyTest.java new file mode 100644 index 00000000..32563965 --- /dev/null +++ b/src/test/java/model/random/RandomMoveStrategyTest.java @@ -0,0 +1,20 @@ +package model.random; + +import model.random.*; +import model.Car; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +public class RandomMoveStrategyTest { + + @Test + @DisplayName("๊ฐ’์ด ๋žœ๋คํ•œ์ง€ ํ™•์ธ") + void checkRandom (){ + // given: "pobi"๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž๋™์ฐจ๋ฅผ ์ค€๋น„ํ•˜๊ณ  + String carName = "pobi"; + FixedNumberMoveStub fixedNumberMoveStub = new FixedNumberMoveStub(); + + } + +} From 2831966d5a59a412dda7b5935fd866c649b1a73c Mon Sep 17 00:00:00 2001 From: nonactress Date: Sat, 20 Sep 2025 14:08:01 +0900 Subject: [PATCH 41/49] feat : isValid over 2 depth --- src/main/java/view/InputView.java | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 00761d4e..a7ee4544 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -10,14 +10,20 @@ public static String[] getCarNames() { String[] splitCar = scanner.nextLine().split(","); while(true) { - if(isValid(splitCar)){ - return splitCar; - } + String[] splits = getStrings(splitCar); + if (splits != null) return splits; splitCar = scanner.nextLine().split(","); } } + private static String[] getStrings(String[] splitCar) { + if(isValid(splitCar)){ + return splitCar; + } + return null; + } + public static int getRaceCount() { System.out.println("์‹œ๋„ํ•  ํšŒ์ˆ˜๋Š” ๋ช‡ํšŒ์ธ๊ฐ€์š”?"); int count = scanner.nextInt(); @@ -32,12 +38,17 @@ public static boolean isValid(String [] cars){ } for (String car : cars) { - if(car.trim().isEmpty()) - { - System.out.println("์ž๋™์ฐจ์˜ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์ผ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค!"); - return false; - } + if (isEmpty(car)) return false; } return true; } + + private static boolean isEmpty(String car) { + if(car.trim().isEmpty()) + { + System.out.println("์ž๋™์ฐจ์˜ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์ผ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค!"); + return true; + } + return false; + } } From ada34f1dc3192865deea3dbe0fd3e757fb4518e6 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 22 Sep 2025 11:03:33 +0900 Subject: [PATCH 42/49] feat (CarsWinner) : new class 'CarWinner' --- src/main/java/RacingGame.java | 1 - src/main/java/controller/RacingService.java | 6 +++- src/main/java/model/Cars.java | 13 +++----- src/main/java/model/CarsWinner.java | 35 +++++++++++++++++++++ 4 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 src/main/java/model/CarsWinner.java diff --git a/src/main/java/RacingGame.java b/src/main/java/RacingGame.java index 9f68372f..5050a938 100644 --- a/src/main/java/RacingGame.java +++ b/src/main/java/RacingGame.java @@ -6,4 +6,3 @@ public static void main(String[] args) { racingController.run(); } } - diff --git a/src/main/java/controller/RacingService.java b/src/main/java/controller/RacingService.java index 1366d766..2ae0c169 100644 --- a/src/main/java/controller/RacingService.java +++ b/src/main/java/controller/RacingService.java @@ -1,12 +1,16 @@ package controller; import model.Cars; +import model.random.RandomGenerator; +import model.random.RandomMoveStrategy; import view.OutputView; public class RacingService { public void startRace(Cars cars, int raceCount) { + RandomGenerator generateRandom = new RandomMoveStrategy(); + for (int i = 0; i < raceCount; i++) { - cars.moveAll(); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ + cars.moveAll(generateRandom); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ OutputView.printRoundResult(cars.getCars()); // View์— ์ถœ๋ ฅ ์š”์ฒญ } } diff --git a/src/main/java/model/Cars.java b/src/main/java/model/Cars.java index ab730f87..f43a4fc3 100644 --- a/src/main/java/model/Cars.java +++ b/src/main/java/model/Cars.java @@ -8,7 +8,7 @@ public class Cars { private final List cars; - RandomGenerator generateRandom = new RandomMoveStrategy(); + //model.random.GenerateRandom testGenerateRandom = new model.random.TestGenerateRandom(); //๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ฝ”๋“œ public Cars(String[] carNames) { @@ -18,19 +18,16 @@ public Cars(String[] carNames) { } } - public void moveAll() { + public void moveAll(RandomGenerator random) { for (Car car : cars) { - move(car); + move(car,random); } } - private void move(Car car) { - if (generateRandom.generate()) { + private void move(Car car,RandomGenerator random) { + if (random.generate()) { car.move(); } -// if (testGenerateRandom.generate()) { -// car.move(); -// } } public List findWinners() { diff --git a/src/main/java/model/CarsWinner.java b/src/main/java/model/CarsWinner.java new file mode 100644 index 00000000..786847f8 --- /dev/null +++ b/src/main/java/model/CarsWinner.java @@ -0,0 +1,35 @@ +package model; + +import model.random.RandomGenerator; +import model.random.RandomMoveStrategy; + +import java.util.ArrayList; +import java.util.List; + +public class CarsWinner { + private final List cars = new ArrayList<>(); + RandomGenerator generateRandom = new RandomMoveStrategy(); + + public List findWinners() { + int maxPosition = findMaxPosition(); + List winners = new ArrayList<>(); + for (Car car : cars) { + checkAndAddWinner(winners, car, maxPosition); + } + return winners; + } + + private void checkAndAddWinner(List winners, Car car, int maxPosition) { + if (car.getPosition() == maxPosition) { + winners.add(car.getName()); + } + } + + private int findMaxPosition() { + int maxPosition = 0; + for (Car car : cars) { + maxPosition = Math.max(car.getPosition(), maxPosition); + } + return maxPosition; + } +} From eb25bf2ccd793657ace1133252016dfb5b970f50 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 22 Sep 2025 11:06:27 +0900 Subject: [PATCH 43/49] feat (Test) : delete 'Racing ControllerTest' --- src/test/java/controller/RacingControllerTest.java | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 src/test/java/controller/RacingControllerTest.java diff --git a/src/test/java/controller/RacingControllerTest.java b/src/test/java/controller/RacingControllerTest.java deleted file mode 100644 index 39e8fe5f..00000000 --- a/src/test/java/controller/RacingControllerTest.java +++ /dev/null @@ -1,4 +0,0 @@ -package controller; - -public class RacingControllerTest { -} From c2e519fcf8011365d815e4a80e7099b231e9f99b Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 22 Sep 2025 11:13:39 +0900 Subject: [PATCH 44/49] refactor (input) : change rogic 'getCarName' --- src/main/java/view/InputView.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a7ee4544..f47419be 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -12,7 +12,7 @@ public static String[] getCarNames() { { String[] splits = getStrings(splitCar); if (splits != null) return splits; - splitCar = scanner.nextLine().split(","); + splitCar = scanner.nextLine().split(",", -1); } } @@ -38,17 +38,12 @@ public static boolean isValid(String [] cars){ } for (String car : cars) { - if (isEmpty(car)) return false; + if(car.trim().isEmpty()) + { + System.out.println("์ž๋™์ฐจ์˜ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์ผ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค!"); + return false; + } } return true; } - - private static boolean isEmpty(String car) { - if(car.trim().isEmpty()) - { - System.out.println("์ž๋™์ฐจ์˜ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์ผ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค!"); - return true; - } - return false; - } } From 43190b6058781981934499dbb767094cbb4ccf22 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 22 Sep 2025 11:39:07 +0900 Subject: [PATCH 45/49] refactor (model,controller) : new class 'Carwinner'2 --- .../java/controller/RacingController.java | 5 ++- src/main/java/controller/RacingService.java | 3 ++ src/main/java/model/Cars.java | 31 ++----------------- src/main/java/model/CarsWinner.java | 15 +++++---- 4 files changed, 17 insertions(+), 37 deletions(-) diff --git a/src/main/java/controller/RacingController.java b/src/main/java/controller/RacingController.java index bf284541..cffc130a 100644 --- a/src/main/java/controller/RacingController.java +++ b/src/main/java/controller/RacingController.java @@ -1,20 +1,23 @@ package controller; import model.Cars; +import model.CarsWinner; import view.InputView; import view.OutputView; + public class RacingController { public void run() { String[] carNames = InputView.getCarNames(); int raceCount = InputView.getRaceCount(); Cars cars = new Cars(carNames); + CarsWinner carsWinner = new CarsWinner(); OutputView.printResultMessage(); RacingService racingService = new RacingService(); racingService.startRace(cars, raceCount); - OutputView.printWinners(cars.findWinners()); + OutputView.printWinners(carsWinner.findWinners(cars)); } } diff --git a/src/main/java/controller/RacingService.java b/src/main/java/controller/RacingService.java index 2ae0c169..7bd0deca 100644 --- a/src/main/java/controller/RacingService.java +++ b/src/main/java/controller/RacingService.java @@ -1,6 +1,7 @@ package controller; import model.Cars; +import model.CarsWinner; import model.random.RandomGenerator; import model.random.RandomMoveStrategy; import view.OutputView; @@ -8,10 +9,12 @@ public class RacingService { public void startRace(Cars cars, int raceCount) { RandomGenerator generateRandom = new RandomMoveStrategy(); + CarsWinner carsWinner = new CarsWinner(); for (int i = 0; i < raceCount; i++) { cars.moveAll(generateRandom); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ OutputView.printRoundResult(cars.getCars()); // View์— ์ถœ๋ ฅ ์š”์ฒญ } + carsWinner.findWinners(cars); } } diff --git a/src/main/java/model/Cars.java b/src/main/java/model/Cars.java index f43a4fc3..99772bf0 100644 --- a/src/main/java/model/Cars.java +++ b/src/main/java/model/Cars.java @@ -3,14 +3,12 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import model.random.RandomMoveStrategy; + import model.random.RandomGenerator; public class Cars { private final List cars; - //model.random.GenerateRandom testGenerateRandom = new model.random.TestGenerateRandom(); //๋‹จ์œ„ ํ…Œ์ŠคํŠธ์šฉ ์ฝ”๋“œ - public Cars(String[] carNames) { this.cars = new ArrayList<>(); for (String name : carNames) { @@ -20,39 +18,16 @@ public Cars(String[] carNames) { public void moveAll(RandomGenerator random) { for (Car car : cars) { - move(car,random); + move(car, random); } } - private void move(Car car,RandomGenerator random) { + private void move(Car car, RandomGenerator random) { if (random.generate()) { car.move(); } } - public List findWinners() { - int maxPosition = findMaxPosition(); - List winners = new ArrayList<>(); - for (Car car : cars) { - checkAndAddWinner(winners, car, maxPosition); - } - return winners; - } - - private void checkAndAddWinner(List winners, Car car, int maxPosition) { - if (car.getPosition() == maxPosition) { - winners.add(car.getName()); - } - } - - private int findMaxPosition() { - int maxPosition = 0; - for (Car car : cars) { - maxPosition = Math.max(car.getPosition(), maxPosition); - } - return maxPosition; - } - public List getCars() { return Collections.unmodifiableList(cars); diff --git a/src/main/java/model/CarsWinner.java b/src/main/java/model/CarsWinner.java index 786847f8..02736179 100644 --- a/src/main/java/model/CarsWinner.java +++ b/src/main/java/model/CarsWinner.java @@ -2,18 +2,17 @@ import model.random.RandomGenerator; import model.random.RandomMoveStrategy; - import java.util.ArrayList; import java.util.List; public class CarsWinner { - private final List cars = new ArrayList<>(); + private final List winners = new ArrayList<>(); RandomGenerator generateRandom = new RandomMoveStrategy(); - public List findWinners() { - int maxPosition = findMaxPosition(); - List winners = new ArrayList<>(); - for (Car car : cars) { + + public List findWinners(Cars cars) { + int maxPosition = findMaxPosition(cars); + for (Car car : cars.getCars()) { checkAndAddWinner(winners, car, maxPosition); } return winners; @@ -25,9 +24,9 @@ private void checkAndAddWinner(List winners, Car car, int maxPosition) { } } - private int findMaxPosition() { + private int findMaxPosition(Cars cars) { int maxPosition = 0; - for (Car car : cars) { + for (Car car : cars.getCars()) { maxPosition = Math.max(car.getPosition(), maxPosition); } return maxPosition; From f6c6e25d7bdfea7aaa55f8e8b86678c1e325bb00 Mon Sep 17 00:00:00 2001 From: nonactress Date: Mon, 22 Sep 2025 14:09:45 +0900 Subject: [PATCH 46/49] refactor (view) :apply 'try-catch' rogic --- src/main/java/view/InputView.java | 32 ++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index f47419be..2af03265 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -6,19 +6,26 @@ public class InputView { private static final Scanner scanner = new Scanner(System.in); public static String[] getCarNames() { - System.out.println("๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์ด๋ฆ„์€ ์‰ผํ‘œ(,) ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„)"); - String[] splitCar = scanner.nextLine().split(","); - while(true) - { - String[] splits = getStrings(splitCar); - if (splits != null) return splits; - splitCar = scanner.nextLine().split(",", -1); + String[] splits = null; + boolean splitsCheck = false; + while (true) { + try { + System.out.println("๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์ด๋ฆ„์€ ์‰ผํ‘œ(,) ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„)"); + splits = scanner.nextLine().split(",", -1); + + // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒ€์ฆ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ + splitsCheck = isValid(splits); + } catch (IllegalArgumentException e) { + // validateCarNames์—์„œ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋ฉด ์ด ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ + // ์˜ˆ์™ธ์— ๋‹ด๊ธด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , while ๋ฃจํ”„์˜ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ + System.out.println(e.getMessage()); + } + if (splits != null && splitsCheck) return splits; } - } private static String[] getStrings(String[] splitCar) { - if(isValid(splitCar)){ + if (isValid(splitCar)) { return splitCar; } return null; @@ -31,15 +38,14 @@ public static int getRaceCount() { return count; } - public static boolean isValid(String [] cars){ - if(cars.length == 1 ){ + public static boolean isValid(String[] cars) { + if (cars.length == 1) { System.out.println("ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ž๋™์ฐจ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”!"); return false; } for (String car : cars) { - if(car.trim().isEmpty()) - { + if (car.trim().isEmpty()) { System.out.println("์ž๋™์ฐจ์˜ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์ผ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค!"); return false; } From 3fb578e600cd2e1e82f10ab1443b33cd50268f57 Mon Sep 17 00:00:00 2001 From: nonactress Date: Wed, 24 Sep 2025 12:20:23 +0900 Subject: [PATCH 47/49] refactor (view) : making Random rogic --- .../java/model/Number/RandomNumberGenrator.java | 13 +++++++++++++ src/main/java/model/random/RandomGenerator.java | 7 ------- .../java/model/random/RandomMoveStrategy.java | 16 ---------------- .../model/random/RandomMoveStrategyTest.java | 1 - 4 files changed, 13 insertions(+), 24 deletions(-) create mode 100644 src/main/java/model/Number/RandomNumberGenrator.java delete mode 100644 src/main/java/model/random/RandomGenerator.java delete mode 100644 src/main/java/model/random/RandomMoveStrategy.java diff --git a/src/main/java/model/Number/RandomNumberGenrator.java b/src/main/java/model/Number/RandomNumberGenrator.java new file mode 100644 index 00000000..4061dc5d --- /dev/null +++ b/src/main/java/model/Number/RandomNumberGenrator.java @@ -0,0 +1,13 @@ +package model.Number; + +import java.util.Random; + +public class RandomNumberGenrator implements NumberGenrator{ + + @Override + public int genrator() + { + final Random random = new Random(); + return random.nextInt(10); + } +} diff --git a/src/main/java/model/random/RandomGenerator.java b/src/main/java/model/random/RandomGenerator.java deleted file mode 100644 index eae1298f..00000000 --- a/src/main/java/model/random/RandomGenerator.java +++ /dev/null @@ -1,7 +0,0 @@ -package model.random; - -public interface RandomGenerator { - static final int MOVE_CONDITION = 4; - - boolean generate(); -} diff --git a/src/main/java/model/random/RandomMoveStrategy.java b/src/main/java/model/random/RandomMoveStrategy.java deleted file mode 100644 index d3b29469..00000000 --- a/src/main/java/model/random/RandomMoveStrategy.java +++ /dev/null @@ -1,16 +0,0 @@ -package model.random; - -import java.util.Random; - -public class RandomMoveStrategy implements RandomGenerator { - private Random random = new Random(); - - @Override - public boolean generate() { - if (random.nextInt(10) > RandomGenerator.MOVE_CONDITION) { - return true; - } - return false; - - } -} diff --git a/src/test/java/model/random/RandomMoveStrategyTest.java b/src/test/java/model/random/RandomMoveStrategyTest.java index 32563965..b7f0d49a 100644 --- a/src/test/java/model/random/RandomMoveStrategyTest.java +++ b/src/test/java/model/random/RandomMoveStrategyTest.java @@ -13,7 +13,6 @@ public class RandomMoveStrategyTest { void checkRandom (){ // given: "pobi"๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž๋™์ฐจ๋ฅผ ์ค€๋น„ํ•˜๊ณ  String carName = "pobi"; - FixedNumberMoveStub fixedNumberMoveStub = new FixedNumberMoveStub(); } From 7d22b1dcca8742b7509ba2f3ecc2505994db95cf Mon Sep 17 00:00:00 2001 From: nonactress Date: Wed, 24 Sep 2025 12:20:47 +0900 Subject: [PATCH 48/49] refactor (Number) : making Package 'Number' --- src/main/java/controller/RacingService.java | 7 +++---- src/main/java/model/Car.java | 4 ++++ src/main/java/model/Cars.java | 11 ++++++----- src/main/java/model/CarsWinner.java | 4 +--- src/main/java/model/Number/IsMovable.java | 10 ++++++++++ src/main/java/model/Number/NumberGenrator.java | 7 +++++++ src/main/java/model/random/FixedNumberMoveStub.java | 13 ------------- src/main/java/view/InputView.java | 6 +++--- 8 files changed, 34 insertions(+), 28 deletions(-) create mode 100644 src/main/java/model/Number/IsMovable.java create mode 100644 src/main/java/model/Number/NumberGenrator.java delete mode 100644 src/main/java/model/random/FixedNumberMoveStub.java diff --git a/src/main/java/controller/RacingService.java b/src/main/java/controller/RacingService.java index 7bd0deca..739882d1 100644 --- a/src/main/java/controller/RacingService.java +++ b/src/main/java/controller/RacingService.java @@ -2,17 +2,16 @@ import model.Cars; import model.CarsWinner; -import model.random.RandomGenerator; -import model.random.RandomMoveStrategy; +import model.Number.IsMovable; import view.OutputView; public class RacingService { public void startRace(Cars cars, int raceCount) { - RandomGenerator generateRandom = new RandomMoveStrategy(); + IsMovable isMovable = new IsMovable(); CarsWinner carsWinner = new CarsWinner(); for (int i = 0; i < raceCount; i++) { - cars.moveAll(generateRandom); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ + cars.moveAll(isMovable); // Model์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ OutputView.printRoundResult(cars.getCars()); // View์— ์ถœ๋ ฅ ์š”์ฒญ } carsWinner.findWinners(cars); diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java index 5ccad8a0..92fbab4f 100644 --- a/src/main/java/model/Car.java +++ b/src/main/java/model/Car.java @@ -1,5 +1,7 @@ package model; +import java.util.ArrayList; + public class Car { private final String name; @@ -21,3 +23,5 @@ public int getPosition() { return position; } } + + diff --git a/src/main/java/model/Cars.java b/src/main/java/model/Cars.java index 99772bf0..d616a941 100644 --- a/src/main/java/model/Cars.java +++ b/src/main/java/model/Cars.java @@ -4,7 +4,8 @@ import java.util.Collections; import java.util.List; -import model.random.RandomGenerator; +import model.Number.IsMovable; +import model.Number.RandomNumberGenrator; public class Cars { private final List cars; @@ -16,14 +17,14 @@ public Cars(String[] carNames) { } } - public void moveAll(RandomGenerator random) { + public void moveAll(IsMovable isMovable) { for (Car car : cars) { - move(car, random); + move(car, isMovable); } } - private void move(Car car, RandomGenerator random) { - if (random.generate()) { + private void move(Car car, IsMovable isMovable) { + if (isMovable.getcheck()) { car.move(); } } diff --git a/src/main/java/model/CarsWinner.java b/src/main/java/model/CarsWinner.java index 02736179..d0d62495 100644 --- a/src/main/java/model/CarsWinner.java +++ b/src/main/java/model/CarsWinner.java @@ -1,13 +1,11 @@ package model; -import model.random.RandomGenerator; -import model.random.RandomMoveStrategy; + import java.util.ArrayList; import java.util.List; public class CarsWinner { private final List winners = new ArrayList<>(); - RandomGenerator generateRandom = new RandomMoveStrategy(); public List findWinners(Cars cars) { diff --git a/src/main/java/model/Number/IsMovable.java b/src/main/java/model/Number/IsMovable.java new file mode 100644 index 00000000..2091a418 --- /dev/null +++ b/src/main/java/model/Number/IsMovable.java @@ -0,0 +1,10 @@ +package model.Number; + +public class IsMovable { + private RandomNumberGenrator randomNumberGenrator= new RandomNumberGenrator(); + private static final int MOVE_CONITION = 4; + + public Boolean getcheck() { + return randomNumberGenrator.genrator() > MOVE_CONITION; + } +} diff --git a/src/main/java/model/Number/NumberGenrator.java b/src/main/java/model/Number/NumberGenrator.java new file mode 100644 index 00000000..9179c89c --- /dev/null +++ b/src/main/java/model/Number/NumberGenrator.java @@ -0,0 +1,7 @@ +package model.Number; + +import java.util.Random; + +public interface NumberGenrator { + int genrator(); +} diff --git a/src/main/java/model/random/FixedNumberMoveStub.java b/src/main/java/model/random/FixedNumberMoveStub.java deleted file mode 100644 index bd8fcbae..00000000 --- a/src/main/java/model/random/FixedNumberMoveStub.java +++ /dev/null @@ -1,13 +0,0 @@ -package model.random; - -public class FixedNumberMoveStub implements RandomGenerator { - private final int TEST_NUM = 5; - - @Override - public boolean generate() { - if (TEST_NUM > MOVE_CONDITION) { - return true; - } - return false; - } -} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 2af03265..b3c4545b 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -39,9 +39,9 @@ public static int getRaceCount() { } public static boolean isValid(String[] cars) { - if (cars.length == 1) { - System.out.println("ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ž๋™์ฐจ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”!"); - return false; + if (cars.length <= 1) { + // boolean์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹ , ์˜ˆ์™ธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋˜์ง‘๋‹ˆ๋‹ค. + throw new IllegalArgumentException("[ERROR] ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ž๋™์ฐจ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”!"); } for (String car : cars) { From 72497ef07c7133a904df6f500ce7d86562d02dff Mon Sep 17 00:00:00 2001 From: nonactress Date: Wed, 24 Sep 2025 12:26:53 +0900 Subject: [PATCH 49/49] refactor (Number) : making 'FixedNumberGenerator' --- src/main/java/model/Cars.java | 1 - src/main/java/model/Number/FixedNumberGenerator.java | 10 ++++++++++ src/main/java/model/Number/IsMovable.java | 9 +++++++-- src/main/java/model/Number/NumberGenerator.java | 5 +++++ src/main/java/model/Number/NumberGenrator.java | 7 ------- ...mNumberGenrator.java => RandomNumberGenerator.java} | 2 +- 6 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 src/main/java/model/Number/FixedNumberGenerator.java create mode 100644 src/main/java/model/Number/NumberGenerator.java delete mode 100644 src/main/java/model/Number/NumberGenrator.java rename src/main/java/model/Number/{RandomNumberGenrator.java => RandomNumberGenerator.java} (74%) diff --git a/src/main/java/model/Cars.java b/src/main/java/model/Cars.java index d616a941..55f5fae6 100644 --- a/src/main/java/model/Cars.java +++ b/src/main/java/model/Cars.java @@ -5,7 +5,6 @@ import java.util.List; import model.Number.IsMovable; -import model.Number.RandomNumberGenrator; public class Cars { private final List cars; diff --git a/src/main/java/model/Number/FixedNumberGenerator.java b/src/main/java/model/Number/FixedNumberGenerator.java new file mode 100644 index 00000000..9817f370 --- /dev/null +++ b/src/main/java/model/Number/FixedNumberGenerator.java @@ -0,0 +1,10 @@ +package model.Number; + +public class FixedNumberGenerator implements NumberGenerator { + private static final int NOT_MOVE_CONITION = 1; + + @Override + public int genrator() { + return NOT_MOVE_CONITION; + } +} diff --git a/src/main/java/model/Number/IsMovable.java b/src/main/java/model/Number/IsMovable.java index 2091a418..0ba60f47 100644 --- a/src/main/java/model/Number/IsMovable.java +++ b/src/main/java/model/Number/IsMovable.java @@ -1,10 +1,15 @@ package model.Number; public class IsMovable { - private RandomNumberGenrator randomNumberGenrator= new RandomNumberGenrator(); + private NumberGenerator movable = new RandomNumberGenerator(); + private NumberGenerator notNovable = new FixedNumberGenerator(); + private static final int MOVE_CONITION = 4; public Boolean getcheck() { - return randomNumberGenrator.genrator() > MOVE_CONITION; + //return movable.genrator() > MOVE_CONITION; + return notNovable.genrator() > MOVE_CONITION; } + + } diff --git a/src/main/java/model/Number/NumberGenerator.java b/src/main/java/model/Number/NumberGenerator.java new file mode 100644 index 00000000..5940fdc1 --- /dev/null +++ b/src/main/java/model/Number/NumberGenerator.java @@ -0,0 +1,5 @@ +package model.Number; + +public interface NumberGenerator { + int genrator(); +} diff --git a/src/main/java/model/Number/NumberGenrator.java b/src/main/java/model/Number/NumberGenrator.java deleted file mode 100644 index 9179c89c..00000000 --- a/src/main/java/model/Number/NumberGenrator.java +++ /dev/null @@ -1,7 +0,0 @@ -package model.Number; - -import java.util.Random; - -public interface NumberGenrator { - int genrator(); -} diff --git a/src/main/java/model/Number/RandomNumberGenrator.java b/src/main/java/model/Number/RandomNumberGenerator.java similarity index 74% rename from src/main/java/model/Number/RandomNumberGenrator.java rename to src/main/java/model/Number/RandomNumberGenerator.java index 4061dc5d..44673268 100644 --- a/src/main/java/model/Number/RandomNumberGenrator.java +++ b/src/main/java/model/Number/RandomNumberGenerator.java @@ -2,7 +2,7 @@ import java.util.Random; -public class RandomNumberGenrator implements NumberGenrator{ +public class RandomNumberGenerator implements NumberGenerator { @Override public int genrator()