diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e7..9657a560 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,64 @@ package racingcar; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import camp.nextstep.edu.missionutils.Console; + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + Scanner sc = new Scanner(System.in); + + List cars = getCars(sc); + int count = getTrialCount(sc); + + raceCars(cars, count); + List winners = getWinners(cars); + + printWinners(winners); + } + + private static List getCars(Scanner sc) { + System.out.print("차 이름들을 입력하세요 (쉼표로 구분): "); + String[] names = Console.readLine().split(","); + + List cars = new ArrayList<>(); + for (String name : names) { + cars.add(new Car(name.trim())); + } + return cars; + } + + private static int getTrialCount(Scanner sc) { + System.out.print("시도할 횟수를 입력하세요: "); + return sc.nextInt(); + } + + private static void raceCars(List cars, int count) { + for (int i = 0; i < count; i++) { + for (Car car : cars) { + car.movement(); + System.out.println(car.getName() + " : " + "-".repeat(car.getPosition())); + } + } + } + + private static List getWinners(List cars) { + int maxPosition = 0; + for (Car car : cars) { + maxPosition = Math.max(maxPosition, car.getPosition()); + } + + List winners = new ArrayList<>(); + for (Car car : cars) { + if (car.getPosition() == maxPosition) { + winners.add(car.getName()); + } + } + return winners; + } + + private static void printWinners(List winners) { + System.out.println("최종 우승자 : " + String.join(", ", winners)); } -} +} \ No newline at end of file diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 00000000..a554cd79 --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,30 @@ +package racingcar; + +import static camp.nextstep.edu.missionutils.Randoms.pickNumberInRange; + +public class Car { + private final String name; + private int position = 0; + + public Car(String name) { + if (name.length() > 5) { + throw new IllegalArgumentException("자동차 이름은 5자 이하만 가능합니다."); + } + this.name = name; + } + + public void movement() { + int randomNumber = pickNumberInRange(0, 9); + if (randomNumber >= 4) { + position++; + } + } + + public String getName() { + return name; + } + + public int getPosition() { + return position; + } +} \ No newline at end of file