diff --git a/.gitignore b/.gitignore
index 4f11bcf..8ba13ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/target/
.idea/
.vscode/
+/.metadata/
diff --git a/README.md b/README.md
index ffbf080..f87561f 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
# java-racingcar-precourse
## 기능
@@ -31,3 +32,138 @@
## 기타
- 잘못된 값 입력할 경우 IllegalArgumentException을 발생시킨 후 애플리케이션은 종료
+
+=======
+{\rtf1\ansi\ansicpg949\cocoartf2822
+\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;\f1\fnil\fcharset129 AppleSDGothicNeo-Regular;}
+{\colortbl;\red255\green255\blue255;}
+{\*\expandedcolortbl;;}
+{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid1\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid2\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li1440\lin1440 }{\listname ;}\listid1}
+{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid101\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid102\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li1440\lin1440 }{\listname ;}\listid2}
+{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid201\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
+{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid301\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}}
+{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}}
+\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
+\deftab560
+\pard\pardeftab560\slleading20\partightenfactor0
+
+\f0\fs26 \cf0 # java-car-racing\
+\pard\pardeftab560\slleading20\pardirnatural\partightenfactor0
+\cf0 \
+\pard\pardeftab560\slleading20\partightenfactor0
+\cf0 ## \uc0\u44592 \u45733 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls1\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51088 \u46041 \u52264 \u51060 \u47492 \u44284 \u49892 \u54665 \u54943 \u49688 \u47484 \u48512 \u50668 \u48155 \u45716 \u45796 .\
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls1\ilvl1
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51088 \u46041 \u52264 \u51060 \u47492 \u51008 \u49788 \u54364 (,)\u47484 \u44592 \u51456 \u51004 \u47196 \u44396 \u48516 \u54616 \u44256 5\u51088 \u51060 \u54616 \u47564 \u44032 \u45733 \u54616 \u45796 .\
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls1\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51452 \u50612 \u51652 \u54943 \u49688 \u46041 \u50500 n \u45824 \u51032 \u51088 \u46041 \u52264 \u45716 \u51204 \u51652 \u54616 \u44144 \u45208 \u47688 \u52656 \u51080 \u45716 \u45796 .\
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls1\ilvl1
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 0-9 \uc0\u49324 \u51060 \u51032 \u47924 \u51089 \u50948 \u44050 \u51012 \u44396 \u54620 \u54980 \u44536 \u44050 \u51060 4 \u51060 \u49345 \u51064 \u44221 \u50864 \u51204 \u51652 \u54620 \u45796 .\
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls1\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u49892 \u54665 \u51060 \u54620 \u48264 \u45149 \u45216 \u46412 \u47560 \u45796 \u49892 \u54665 \u44208 \u44284 \u47484 \u52636 \u47141 \u54616 \u44256 \u51060 \u46412 \u51088 \u46041 \u52264 \u51060 \u47492 \u51012 \u44057 \u51060 \u52636 \u47141 \u54620 \u45796 .\
+\ls1\ilvl0
+\fs24 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51088 \u46041 \u52264 \u44221 \u51452 \u44172 \u51076 \u51012 \u50756 \u47308 \u54620 \u54980 \u45572 \u44032 \u50864 \u49849 \u54664 \u45716 \u51648 \u47484 \u50508 \u47140 \u51456 \u45796 . \u50864 \u49849 \u51088 \u45716 \u54620 \u47749 \u51060 \u49345 \u51068 \u49688 \u51080 \u45796 .\
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls1\ilvl1
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u44277 \u46041 \u50864 \u49849 \u51032 \u44221 \u50864 \u49788 \u54364 (,)\u47484 \u49324 \u50857 \u54644 \u44396 \u48516 \u54620 \u45796 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls1\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u49324 \u50857 \u51088 \u44032 \u51096 \u47803 \u46108 \u44050 \u51012 \u51077 \u47141 \u54624 \u44221 \u50864 \'a0IllegalArgumentException\u51012 \u48156 \u49373 \u49884 \u53416 \u54980 \u50528 \u54540 \u47532 \u52992 \u51060 \u49496 \u51008 \u51333 \u47308 \u46104 \u50612 \u50556 \u54620 \u45796 \
+\pard\pardeftab560\slleading20\partightenfactor0
+\cf0 \
+## \uc0\u49892 \u54665 \u48169 \u48277 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls2\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u44221 \u51452 \u54624 \u51088 \u46041 \u52264 \u51060 \u47492 \u51012 \u51077 \u47141 \u54620 \u45796 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls2\ilvl1
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51088 \u46041 \u52264 \u51060 \u47492 \u51012 \u49788 \u54364 (,) \u44592 \u51456 \u51004 \u47196 \u44396 \u48516 \u54620 \u45796 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls2\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u49884 \u46020 \u54624 \u54943 \u49688 \u47484 \u51077 \u47141 \u54620 \u45796 \
+\ls2\ilvl0
+\fs24 {\listtext \uc0\u8259 }
+\fs26 \uc0\u52264 \u49688 \u48324 \u49892 \u54665 \u44208 \u44284 \u47484 \u52636 \u47141 \u54620 \u45796 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls2\ilvl1
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51652 \u52636 \u54620 \u47564 \u53372 -\u47196 \u54364 \u49884 \u54620 \u45796 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls2\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u50864 \u49849 \u51088 \u47484 \u52636 \u47141 \u54620 \u45796 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls2\ilvl1
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u44277 \u46041 \u50864 \u49849 \u51032 \u44221 \u50864 \u49788 \u54364 (,)\u47196 \u44396 \u48516 \u54644 \u52636 \u47141 \u54620 \u45796 \
+\pard\pardeftab560\slleading20\pardirnatural\partightenfactor0
+\cf0 \
+\pard\pardeftab560\slleading20\partightenfactor0
+\cf0 ## \uc0\u44396 \u54788 \u54624 \u44592 \u45733 \u47785 \u47197 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls3\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51088 \u46041 \u52264 \u51060 \u47492 \u51077 \u47141 \u48155 \u44592 \
+\ls3\ilvl0
+\fs24 {\listtext \uc0\u8259 }
+\fs26 \uc0\u49892 \u54665 \u54943 \u49688 \u51077 \u47141 \u48155 \u44592 \
+\ls3\ilvl0
+\fs24 {\listtext \uc0\u8259 }
+\fs26 \uc0\u51312 \u44148 \u50640 \u46384 \u46972 \u51204 \u51652 \u54616 \u44592 \
+\ls3\ilvl0
+\fs24 {\listtext \uc0\u8259 }
+\fs26 \uc0\u49892 \u54665 \u44208 \u44284 \u52636 \u47141 \u54616 \u44592 \
+\ls3\ilvl0
+\fs24 {\listtext \uc0\u8259 }
+\fs26 \uc0\u50864 \u49849 \u51088 \u54032 \u48324 \u54616 \u44592 \
+\ls3\ilvl0
+\fs24 {\listtext \uc0\u8259 }
+\fs26 \uc0\u50864 \u49849 \u51088 \u52636 \u47141 \u54616 \u44592 \
+\pard\pardeftab560\slleading20\pardirnatural\partightenfactor0
+\cf0 \
+\pard\pardeftab560\slleading20\partightenfactor0
+\cf0 ## \uc0\u50756 \u47308 \u46108 \u44592 \u45733 \
+\pard\pardeftab560\slleading20\pardirnatural\partightenfactor0
+\cf0 \
+\pard\pardeftab560\slleading20\partightenfactor0
+\cf0 ## \uc0\u44592 \u53440 \
+\pard\pardeftab560\pardirnatural\partightenfactor0
+\ls4\ilvl0
+\fs24 \cf0 {\listtext \uc0\u8259 }
+\f1\fs26 \'c0\'df\'b8\'f8\'b5\'c8
+\f0
+\f1 \'b0\'aa
+\f0
+\f1 \'c0\'d4\'b7\'c2\'c7\'d2
+\f0
+\f1 \'b0\'e6\'bf\'ec
+\f0 IllegalArgumentException
+\f1 \'c0\'bb
+\f0
+\f1 \'b9\'df\'bb\'fd\'bd\'c3\'c5\'b2
+\f0
+\f1 \'c8\'c4
+\f0
+\f1 \'be\'d6\'c7\'c3\'b8\'ae\'c4\'c9\'c0\'cc\'bc\'c7\'c0\'ba
+\f0
+\f1 \'c1\'be\'b7\'e1
+\f0 \
+}
+>>>>>>> 1f6cf6e (main application작성)
diff --git a/Utech2CarRacing/.classpath b/Utech2CarRacing/.classpath
new file mode 100644
index 0000000..463d5f9
--- /dev/null
+++ b/Utech2CarRacing/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Utech2CarRacing/.gitignore b/Utech2CarRacing/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/Utech2CarRacing/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/Utech2CarRacing/.project b/Utech2CarRacing/.project
new file mode 100644
index 0000000..04e3162
--- /dev/null
+++ b/Utech2CarRacing/.project
@@ -0,0 +1,17 @@
+
+
+ Utech2CarRacing
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Utech2CarRacing/.settings/org.eclipse.core.resources.prefs b/Utech2CarRacing/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/Utech2CarRacing/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/Utech2CarRacing/.settings/org.eclipse.jdt.core.prefs b/Utech2CarRacing/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..9a7984b
--- /dev/null
+++ b/Utech2CarRacing/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=21
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=21
diff --git a/Utech2CarRacing/src/module-info.java b/Utech2CarRacing/src/module-info.java
new file mode 100644
index 0000000..bb779c3
--- /dev/null
+++ b/Utech2CarRacing/src/module-info.java
@@ -0,0 +1,8 @@
+/**
+ *
+ */
+/**
+ *
+ */
+module Utech2CarRacing {
+}
\ No newline at end of file
diff --git a/Utech2CarRacing/src/racingcar/Application.java b/Utech2CarRacing/src/racingcar/Application.java
new file mode 100644
index 0000000..8e6665b
--- /dev/null
+++ b/Utech2CarRacing/src/racingcar/Application.java
@@ -0,0 +1,131 @@
+package racingcar;
+
+import camp.nextstep.edu.missionutils.Console;
+import camp.nextstep.edu.missionutils.Randoms;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+class Game {
+ public void start() {
+ InputView inputView = new InputView();
+ ResultView resultView = new ResultView();
+
+ Cars cars = inputView.inputCarNames();
+ int rounds = inputView.inputAttemptCount();
+
+ resultView.printResultMessage();
+
+ for (int i = 0; i < rounds; i++) {
+ cars.moveAll();
+ resultView.printRound(cars);
+ }
+
+ resultView.printWinners(cars.findWinners());
+ }
+}
+
+class InputView {
+ public Cars inputCarNames() {
+ System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)");
+ String input = Console.readLine();
+ List names = Arrays.stream(input.split(","))
+ .map(String::trim)
+ .toList();
+ return new Cars(names);
+ }
+
+ public int inputAttemptCount() {
+ System.out.println("시도할 횟수는 몇 회인가요?");
+ String input = Console.readLine();
+ validateNumeric(input);
+ return Integer.parseInt(input);
+ }
+
+ private void validateNumeric(String input) {
+ if (!input.matches("\\d+")) {
+ throw new IllegalArgumentException("숫자를 입력해야 합니다.");
+ }
+ }
+}
+
+class ResultView {
+ public void printResultMessage() {
+ System.out.println();
+ System.out.println("실행 결과");
+ }
+
+ public void printRound(Cars cars) {
+ for (Car car : cars.getCars()) {
+ System.out.println(car.getName() + " : " + "-".repeat(car.getPosition()));
+ }
+ System.out.println();
+ }
+
+ public void printWinners(List winners) {
+ System.out.println("최종 우승자 : " + String.join(", ", winners));
+ }
+}
+
+class Car {
+ private static final int MOVE_THRESHOLD = 4;
+ private final String name;
+ private int position = 0;
+
+ public Car(String name) {
+ validateName(name);
+ this.name = name;
+ }
+
+ private void validateName(String name) {
+ if (name == null || name.isEmpty() || name.length() > 5) {
+ throw new IllegalArgumentException("자동차 이름은 1~5자여야 합니다.");
+ }
+ }
+
+ public void move() {
+ int randomNumber = Randoms.pickNumberInRange(0, 9);
+ if (randomNumber >= MOVE_THRESHOLD) {
+ position++;
+ }
+ }
+
+ public String getName() { return name; }
+ public int getPosition() { return position; }
+}
+
+class Cars {
+ private final List cars;
+
+ public Cars(List names) {
+ this.cars = names.stream()
+ .map(Car::new)
+ .collect(Collectors.toList());
+ }
+
+ public void moveAll() {
+ cars.forEach(Car::move);
+ }
+
+ public List getCars() {
+ return cars;
+ }
+
+ public List findWinners() {
+ int max = cars.stream()
+ .mapToInt(Car::getPosition)
+ .max()
+ .orElse(0);
+ return cars.stream()
+ .filter(c -> c.getPosition() == max)
+ .map(Car::getName)
+ .collect(Collectors.toList());
+ }
+}
+
+public class Application {
+ public static void main(String[] args) {
+ Game game = new Game();
+ game.start();
+ }
+}