diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..9fc789d
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,4 @@
+{
+ "singleQuote": false,
+ "tabWidth": 4
+}
diff --git a/README.md b/README.md
index 8b2833c..18b213f 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,52 @@
-# javascript-baseball-precourse
\ No newline at end of file
+# 숫자 야구 게임
+
+## UI
+1. **템플릿 구현**: 화면 디자인 및 템플릿을 구현합니다.
+2. **처음 게임 시작 시 '결과' 부분 숨기기**: 게임이 시작될 때 '결과' 부분을 숨겨 사용자의 눈을 덜 끌어냅니다.
+
+## 야구게임 결과
+게임 진행 중에 발생하는 다양한 결과에 대한 설명입니다.
+
+### 1. 정답인 경우
+- 정답 문구 출력
+- 게임 재시작 문구 출력
+- 게임 재시작 버튼 생성
+
+### 2. 오답인 경우
+- N스트라이크 N볼 형식으로 게임 진행 상황 출력
+
+### 3. 잘못된 값 입력 시
+- `alert()`로 에러 메시지 출력
+
+### 예외 케이스 종류
+1. 문자열 입력
+2. 특수문자 입력
+3. 소수 입력
+4. 중복된 숫자 입력
+5. 3개 이상 또는 이하의 숫자 입력
+
+## 기능 구현
+
+### 정답 세팅 (SetAnswer)
+1. 랜덤 함수로 정답을 생성합니다.
+
+### 숫자 입력 받기 (HandleInput, OnlyNumber)
+1. input 창에 숫자 입력을 받습니다.
+2. 확인 버튼 클릭 시, 입력된 숫자를 전달 받습니다.
+3. 예외 케이스에 해당하는 입력을 받았을 경우 에러 메시지를 출력합니다.
+
+### 게임 진행 (CompareValue)
+1. 입력된 수와 컴퓨터의 수를 비교합니다.
+ - 같은 수, 같은 자리 = 스트라이크
+ - 같은 수, 다른 자리 = 볼
+ - 모두 다른 수 = 낫싱
+
+
+### 출력 (ShowResult)
+1. displayNone으로 숨겨뒀던 결과 content를 보이게 합니다.
+2. 비교한 결과를 사용자에게 보여줍니다.
+
+### 리셋 (ResetValues, EndGame)
+1. 게임 재시작 버튼을 눌렀을 시, location.reload()로 초기화합니다.
+2. 게임 종료 버튼을 눌렀을 시, 화면을 초기화하고 게임을 종료합니다.
+
diff --git a/index.html b/index.html
index b021b5c..44e22a4 100644
--- a/index.html
+++ b/index.html
@@ -1,12 +1,35 @@
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 숫자 야구 게임
+
+
+
+
+
+
⚾숫자 야구 게임
+
1~9까지의 수를 중복없이 3개 입력해주세요
+
올바른 예) 139
+
틀린 예) 122
+
+
결과
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main.js b/src/main.js
index e69de29..718e8b3 100644
--- a/src/main.js
+++ b/src/main.js
@@ -0,0 +1,14 @@
+import { HandleInput } from "./modules/HandleInput.js";
+import { SetAnswer } from "./modules/SetAnswer.js";
+import { OnlyNumber } from "./modules/OnlyNumber.js";
+import { ResetValues } from "./modules/ResetValues.js";
+import { EndGame } from "./modules/EndGame.js";
+
+SetAnswer();
+
+document.querySelector("form").addEventListener("submit", HandleInput);
+document.querySelector("input").addEventListener("keydown", OnlyNumber);
+
+// 추가된 버튼의 이벤트 리스너를 할당합니다.
+document.getElementById("resetBtn").addEventListener("click", ResetValues);
+document.getElementById("endGameBtn").addEventListener("click", EndGame);
diff --git a/src/modules/CompareValue.js b/src/modules/CompareValue.js
new file mode 100644
index 0000000..d05be9f
--- /dev/null
+++ b/src/modules/CompareValue.js
@@ -0,0 +1,18 @@
+import { ShowResult } from "./ShowResult.js";
+import { answer } from "./SetAnswer.js";
+
+export const CompareValue = () => {
+ const inputEl = document.querySelector("input");
+
+ let strikes = 0;
+ let balls = 0;
+ for (let i = 0; i < 3; i++) {
+ if (inputEl.value[i] === answer[i]) {
+ strikes++;
+ } else if (answer.includes(inputEl.value[i])) {
+ balls++;
+ }
+ }
+
+ ShowResult(strikes, balls);
+};
diff --git a/src/modules/EndGame.js b/src/modules/EndGame.js
new file mode 100644
index 0000000..3b32e26
--- /dev/null
+++ b/src/modules/EndGame.js
@@ -0,0 +1,4 @@
+export const EndGame = () => {
+ const app = document.getElementById("app");
+ app.innerHTML = "