diff --git a/settings.gradle b/settings.gradle
index 11c425be..b9115196 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,3 +2,5 @@ plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
}
rootProject.name = 'java-baseball'
+
+include 'src:main:Kotlin'
\ No newline at end of file
diff --git a/src/main/Kotlin/build.gradle.kts b/src/main/Kotlin/build.gradle.kts
new file mode 100644
index 00000000..b8f1573f
--- /dev/null
+++ b/src/main/Kotlin/build.gradle.kts
@@ -0,0 +1,21 @@
+plugins {
+ kotlin("jvm") version "2.1.20"
+}
+
+group = "camp.nextstep.edu"
+version = "1.0-SNAPSHOT"
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testImplementation(kotlin("test"))
+}
+
+tasks.test {
+ useJUnitPlatform()
+}
+kotlin {
+ jvmToolchain(17)
+}
\ No newline at end of file
diff --git a/src/main/Kotlin/build/classes/kotlin/main/META-INF/Kotlin.kotlin_module b/src/main/Kotlin/build/classes/kotlin/main/META-INF/Kotlin.kotlin_module
new file mode 100644
index 00000000..bef24377
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/META-INF/Kotlin.kotlin_module differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/camp/nextstep/edu/MainKt.class b/src/main/Kotlin/build/classes/kotlin/main/camp/nextstep/edu/MainKt.class
new file mode 100644
index 00000000..34c1f715
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/camp/nextstep/edu/MainKt.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/Application.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/Application.class
new file mode 100644
index 00000000..363c84ad
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/Application.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/ApplicationKt.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/ApplicationKt.class
new file mode 100644
index 00000000..54a585ce
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/ApplicationKt.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/Car.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/Car.class
new file mode 100644
index 00000000..f0c1a7d7
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/Car.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/Cars.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/Cars.class
new file mode 100644
index 00000000..765e1ffa
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/Cars.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/InputView.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/InputView.class
new file mode 100644
index 00000000..e61df8d1
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/InputView.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/RacingGame.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/RacingGame.class
new file mode 100644
index 00000000..976d0008
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/RacingGame.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/RandomGenerator.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/RandomGenerator.class
new file mode 100644
index 00000000..d679adde
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/RandomGenerator.class differ
diff --git a/src/main/Kotlin/build/classes/kotlin/main/racinggame/ResultView.class b/src/main/Kotlin/build/classes/kotlin/main/racinggame/ResultView.class
new file mode 100644
index 00000000..9eb24814
Binary files /dev/null and b/src/main/Kotlin/build/classes/kotlin/main/racinggame/ResultView.class differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
new file mode 100644
index 00000000..effc2525
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream
new file mode 100644
index 00000000..f4b426f9
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len
new file mode 100644
index 00000000..eb0b8a06
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len
new file mode 100644
index 00000000..01bdaa1d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at
new file mode 100644
index 00000000..f265581c
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i
new file mode 100644
index 00000000..3d1b67cc
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
new file mode 100644
index 00000000..29e638c7
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream
new file mode 100644
index 00000000..c05ebe6c
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len
new file mode 100644
index 00000000..1b7aee7a
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len
new file mode 100644
index 00000000..817b326d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
new file mode 100644
index 00000000..92b2b7d9
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i
new file mode 100644
index 00000000..fcc9e4af
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
new file mode 100644
index 00000000..6ae6025f
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream
new file mode 100644
index 00000000..c05ebe6c
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len
new file mode 100644
index 00000000..1b7aee7a
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len
new file mode 100644
index 00000000..817b326d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
new file mode 100644
index 00000000..63702a97
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i
new file mode 100644
index 00000000..fcc9e4af
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab
new file mode 100644
index 00000000..ae197ee7
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
new file mode 100644
index 00000000..5372ad2d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len
new file mode 100644
index 00000000..c7fbb233
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len
new file mode 100644
index 00000000..eb0b8a06
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at
new file mode 100644
index 00000000..b59af066
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i
new file mode 100644
index 00000000..4372e9c5
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab
new file mode 100644
index 00000000..46211205
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream
new file mode 100644
index 00000000..83684d65
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len
new file mode 100644
index 00000000..bcd95fb7
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len
new file mode 100644
index 00000000..01bdaa1d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at
new file mode 100644
index 00000000..6fcb00a8
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i
new file mode 100644
index 00000000..64de8e65
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab
new file mode 100644
index 00000000..e856ba34
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream
new file mode 100644
index 00000000..26d26b14
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len
new file mode 100644
index 00000000..ccebd9a0
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len
new file mode 100644
index 00000000..fd5292d4
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
new file mode 100644
index 00000000..ccb652b4
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i
new file mode 100644
index 00000000..7cdc4739
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab
new file mode 100644
index 00000000..02462313
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream
new file mode 100644
index 00000000..f4b426f9
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len
new file mode 100644
index 00000000..eb0b8a06
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len
new file mode 100644
index 00000000..01bdaa1d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at
new file mode 100644
index 00000000..b3f46e48
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i
new file mode 100644
index 00000000..3d1b67cc
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab
new file mode 100644
index 00000000..2ceb12b8
--- /dev/null
+++ b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab
@@ -0,0 +1,2 @@
+2
+0
\ No newline at end of file
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab
new file mode 100644
index 00000000..9f165842
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream
new file mode 100644
index 00000000..f4b426f9
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len
new file mode 100644
index 00000000..eb0b8a06
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len
new file mode 100644
index 00000000..01bdaa1d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at
new file mode 100644
index 00000000..7d30a43b
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i
new file mode 100644
index 00000000..3d1b67cc
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab
new file mode 100644
index 00000000..4a00e039
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream
new file mode 100644
index 00000000..100d2055
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len
new file mode 100644
index 00000000..ccfcbf41
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len
new file mode 100644
index 00000000..01bdaa1d
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at
new file mode 100644
index 00000000..85745013
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i
new file mode 100644
index 00000000..f768a77f
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab
new file mode 100644
index 00000000..68d31941
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream
new file mode 100644
index 00000000..21ca6ce3
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len
new file mode 100644
index 00000000..27e0276c
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len
new file mode 100644
index 00000000..692f8605
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at
new file mode 100644
index 00000000..3e4431d3
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i
new file mode 100644
index 00000000..13a4ae2f
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len
new file mode 100644
index 00000000..131e2657
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/last-build.bin b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/last-build.bin
new file mode 100644
index 00000000..3d1a1d6c
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/cacheable/last-build.bin differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/src/main/Kotlin/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin
new file mode 100644
index 00000000..5e253b0f
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin differ
diff --git a/src/main/Kotlin/build/kotlin/compileKotlin/local-state/build-history.bin b/src/main/Kotlin/build/kotlin/compileKotlin/local-state/build-history.bin
new file mode 100644
index 00000000..c7e9c615
Binary files /dev/null and b/src/main/Kotlin/build/kotlin/compileKotlin/local-state/build-history.bin differ
diff --git a/src/main/Kotlin/src/main/kotlin/Main.kt b/src/main/Kotlin/src/main/kotlin/Main.kt
new file mode 100644
index 00000000..5e42103d
--- /dev/null
+++ b/src/main/Kotlin/src/main/kotlin/Main.kt
@@ -0,0 +1,16 @@
+package camp.nextstep.edu
+
+//TIP To Run code, press or
+// click the icon in the gutter.
+fun main() {
+ val name = "Kotlin"
+ //TIP Press with your caret at the highlighted text
+ // to see how IntelliJ IDEA suggests fixing it.
+ println("Hello, " + name + "!")
+
+ for (i in 1..5) {
+ //TIP Press to start debugging your code. We have set one breakpoint
+ // for you, but you can always add more by pressing .
+ println("i = $i")
+ }
+}
\ No newline at end of file
diff --git a/src/main/Kotlin/src/main/kotlin/racinggame/Application.kt b/src/main/Kotlin/src/main/kotlin/racinggame/Application.kt
new file mode 100644
index 00000000..529e30d8
--- /dev/null
+++ b/src/main/Kotlin/src/main/kotlin/racinggame/Application.kt
@@ -0,0 +1,95 @@
+package racinggame
+
+fun main() {
+ Application().start()
+}
+
+class Application {
+ fun start() {
+ val carNames = InputView.readCarNames()
+ val tryCount = InputView.readTryCount()
+
+ val cars = Cars(carNames.map { Car(it) })
+ val game = RacingGame(cars)
+
+ println("\n실행 결과")
+ repeat(tryCount) {
+ game.race()
+ ResultView.printRaceResult(cars)
+ }
+
+ ResultView.printWinners(cars.findWinners())
+ }
+}
+
+object InputView {
+ fun readCarNames(): List {
+ while (true) {
+ try {
+ println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)")
+ val input = readln()
+ return input.split(",").map { it.trim() }.also {
+ require(it.all { name -> name.length in 1..5 }) { "[ERROR] 이름은 1자 이상 5자 이하만 가능합니다." }
+ }
+ } catch (e: IllegalArgumentException) {
+ println(e.message)
+ }
+ }
+ }
+
+ fun readTryCount(): Int {
+ while (true) {
+ try {
+ println("시도할 회수는 몇회인가요?")
+ val input = readln()
+ return input.toInt().also {
+ require(it > 0) { "[ERROR]-회수는 1 이상이어야 합니다." }
+ }
+ } catch (e: Exception) {
+ println("[ERROR] 올바른 숫자를 입력해주세요.")
+ }
+ }
+ }
+}
+
+object ResultView {
+ fun printRaceResult(cars: Cars) {
+ cars.all().forEach {
+ println("${it.name} : ${"-".repeat(it.position)}")
+ }
+ println()
+ }
+
+ fun printWinners(winners: List) {
+ println("최종 우승자 : ${winners.joinToString(", ") { it.name }}")
+ }
+}
+
+class RacingGame(private val cars: Cars) {
+ fun race() {
+ cars.moveAll()
+ }
+}
+
+class Cars(private val cars: List) {
+ fun moveAll() {
+ cars.forEach { it.move(RandomGenerator.generate()) }
+ }
+
+ fun all(): List = cars
+
+ fun findWinners(): List {
+ val max = cars.maxOf { it.position }
+ return cars.filter { it.position == max }
+ }
+}
+
+class Car(val name: String, var position: Int = 0) {
+ fun move(condition: Int) {
+ if (condition >= 4) position++
+ }
+}
+
+object RandomGenerator {
+ fun generate(): Int = (0..9).random()
+}