@@ -0,0 +1,113 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.Scanner;
+
+public class RacingCar {
+
+    static String move = "-";
+
+    static List<Car> recordMovingCar = new ArrayList<>();
+
+    public static void main(String[] args) {
+
+        InputView userInput = scannerInput();
+
+        int numberOfCarsValue = userInput.getNumberOfCars();
+        int numberOfAttemptsValue = userInput.getNumberOfAttempts();
+
+        System.out.println("======= READY =========");
+        for (int carNumber=0; carNumber < numberOfCarsValue; carNumber++) { System.out.println(move); }
+
+        System.out.println("======= START!! =======");
+        randomMove(numberOfCarsValue, numberOfAttemptsValue);
+
+    }
+
+    public static void randomMove(int numberOfCarsValue, int numberOfAttemptsValue) {
+        Random random = new Random();
+
+        for (int attempt=0; attempt < numberOfAttemptsValue; attempt++) {
+            for (int eachCar = 0; eachCar < numberOfCarsValue; eachCar++) {
+
+                int randomValueForMove = random.nextInt(numberOfAttemptsValue);
+
+                String move = "-";
+                Car car = new Car();
+                car.setMoving(move);
+                recordMovingCar.add(car);
+
+                String beforeMoving = "";
+
+//                System.out.println("랜덤 값 : " + randomValueForMove);
+
+                if (randomValueForMove > 9 || randomValueForMove < 4) {
+                    beforeMoving = recordMovingCar.get(eachCar).getMoving();
+                    String doNotMove = beforeMoving + moving(randomValueForMove);
+                    car.setMoving(doNotMove);
+                }
+
+
+                if (randomValueForMove > 0 & randomValueForMove > 3 & randomValueForMove <= 9) {
+                    beforeMoving = recordMovingCar.get(eachCar).getMoving();
+                    String plusMoving = beforeMoving + moving(randomValueForMove);
+                    car.setMoving(plusMoving);
+                }
+
+                recordMovingCar.add(car);
+                recordMovingCar.get(eachCar).setMoving(car.getMoving());
+                System.out.println(recordMovingCar.get(eachCar).getMoving());
+            }
+            System.out.print(System.lineSeparator());
+        }
+    }
+
+    public static String moving(int randomValueForMove) {
+        String move = "-";
+
+        if (randomValueForMove > 9 || randomValueForMove < 4) {
+            move = "";
+            return move;
+        }
+
+        for (int number=0; number < randomValueForMove; number++) { move = move + "-";}
+
+        return move;
+    }
+
+    public static InputView scannerInput() {
+
+        InputView inputView = new InputView();
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.println("자동차 대수는 몇 대인가요?");
+        inputView.setNumberOfCars(scanner.nextInt());
+
+        System.out.println("시도 횟수는 몇 회인가요?");
+        inputView.setNumberOfAttempts(scanner.nextInt());
+
+        return inputView;
+    }
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

리뷰: RacingCar가 Application을 구동하는 책임을 가지는걸로 보이는데요. 
그래서 InputView를 의존하고 있고, main 메소드를 수행하고 있네요.
그런 맥락에서 randomMove 등의 역할도 모두 수행하는 것은 SRP (단일 책임원칙) 위반으로 보입니다.
단일책임원칙은, 각 클래스가 변경될 이유가 하나라는 의미인데요. 
현재는 입력, 수행, 출력 등을 제어, 자동차 게임 수행, 입력, 출력 등 모든 로직이 RacingCar class에 존재하네요.