From 42ffc1f06eaf009440597f45b5b652db3a97faca Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 13:05:09 +0900 Subject: [PATCH 01/42] =?UTF-8?q?docs:=20README=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/README.md b/README.md index 5fa2560b46..a436b8e75c 100644 --- a/README.md +++ b/README.md @@ -1 +1,106 @@ # java-lotto-precourse + +## ๐Ÿ‘€ ๋ฏธ์…˜ ์ƒ์„ธ + +๊ฐ„๋‹จํ•œ ๋กœ๋˜ ๋ฐœ๋งค๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. + +๋กœ๋˜ ๋ฒˆํ˜ธ์˜ ์ˆซ์ž ๋ฒ”์œ„๋Š” 1~45๊นŒ์ง€์ด๋‹ค.
+1๊ฐœ์˜ ๋กœ๋˜๋ฅผ ๋ฐœํ–‰ํ•  ๋•Œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š”๋‹ค.
+๋‹น์ฒจ ๋ฒˆํ˜ธ ์ถ”์ฒจ ์‹œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ˆซ์ž 6๊ฐœ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ 1๊ฐœ๋ฅผ ๋ฝ‘๋Š”๋‹ค.
+๋‹น์ฒจ์€ 1๋“ฑ๋ถ€ํ„ฐ 5๋“ฑ๊นŒ์ง€ ์žˆ๋‹ค.
+๋‹น์ฒจ ๊ธฐ์ค€๊ณผ ๊ธˆ์•ก์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. +- 1๋“ฑ: 6๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 2,000,000,000์› +- 2๋“ฑ: 5๊ฐœ ๋ฒˆํ˜ธ + ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ผ์น˜ / 30,000,000์› +- 3๋“ฑ: 5๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 1,500,000์› +- 4๋“ฑ: 4๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 50,000์› +- 5๋“ฑ: 3๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 5,000์› + +๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก์„ ์ž…๋ ฅํ•˜๋ฉด ๊ตฌ์ž… ๊ธˆ์•ก์— ํ•ด๋‹นํ•˜๋Š” ๋งŒํผ ๋กœ๋˜๋ฅผ ๋ฐœํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
+๋กœ๋˜ 1์žฅ์˜ ๊ฐ€๊ฒฉ์€ 1,000์›์ด๋‹ค.
+๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
+์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋‹น์ฒจ ๋‚ด์—ญ ๋ฐ ์ˆ˜์ต๋ฅ ์„ ์ถœ๋ ฅํ•˜๊ณ  ๋กœ๋˜ ๊ฒŒ์ž„์„ ์ข…๋ฃŒํ•œ๋‹ค.
+ +์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ `IllegalArgumentException`์„ ๋ฐœ์ƒ์‹œํ‚ค๊ณ , "[ERROR]"๋กœ ์‹œ์ž‘ํ•˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ ํ›„ ๊ทธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋‹ค์‹œ ๋ฐ›๋Š”๋‹ค. +Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ ๊ฐ™์€ ๋ช…ํ™•ํ•œ ์œ ํ˜•์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. + + +### ์ž…๋ ฅ +1. ๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. ๊ตฌ์ž… ๊ธˆ์•ก์€ 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅ ๋ฐ›์œผ๋ฉฐ 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•œ๋‹ค. +``` +14000 +``` +2. ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. ๋ฒˆํ˜ธ๋Š” ์‰ผํ‘œ(,)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. +``` +1,2,3,4,5,6 +``` +3. ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. +``` +7 +``` + +### ์ถœ๋ ฅ + +- ๋ฐœํ–‰ํ•œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๋ฐ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค +``` +8๊ฐœ๋ฅผ ๊ตฌ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค. +[8, 21, 23, 41, 42, 43] +[3, 5, 11, 16, 32, 38] +[7, 11, 16, 35, 36, 44] +[1, 8, 11, 31, 41, 42] +[13, 14, 16, 38, 42, 45] +[7, 11, 30, 40, 42, 43] +[2, 13, 22, 32, 38, 45] +[1, 3, 5, 14, 22, 45] +``` +- ๋‹น์ฒจ ๋‚ด์—ญ์„ ์ถœ๋ ฅํ•œ๋‹ค. +``` +3๊ฐœ ์ผ์น˜ (5,000์›) - 1๊ฐœ +4๊ฐœ ์ผ์น˜ (50,000์›) - 0๊ฐœ +5๊ฐœ ์ผ์น˜ (1,500,000์›) - 0๊ฐœ +5๊ฐœ ์ผ์น˜, ๋ณด๋„ˆ์Šค ๋ณผ ์ผ์น˜ (30,000,000์›) - 0๊ฐœ +6๊ฐœ ์ผ์น˜ (2,000,000,000์›) - 0๊ฐœ +``` +- ์ˆ˜์ต๋ฅ ์€ ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•œ๋‹ค. (ex. 100.0%, 51.5%, 1,000,000.0%) +``` +์ด ์ˆ˜์ต๋ฅ ์€ 62.5%์ž…๋‹ˆ๋‹ค. +``` +์˜ˆ์™ธ ์ƒํ™ฉ ์‹œ ์—๋Ÿฌ ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ, ์—๋Ÿฌ ๋ฌธ๊ตฌ๋Š” "[ERROR]"๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. +``` +[ERROR] ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ˆซ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. +``` + + +## ๐ŸŒˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ชฉ๋ก + +- [ ] **๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก ์ž…๋ ฅ ๋ฐ›๊ธฐ** + - [ ] 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅ๋œ ๊ธˆ์•ก์ธ์ง€ ํ™•์ธ + - [ ] ์ž…๋ ฅ ๊ธˆ์•ก์ด 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์œผ๋ฉด `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ + +- [ ] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** + - [ ] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ + - [ ] ๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฒ”์œ„(1~45) ๋‚ด์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ + - [ ] ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ + - [ ] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ + +- [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** + - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ + - [ ] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ด๋ฉฐ, ์ค‘๋ณต์ด ์—†๋Š”์ง€ ํ™•์ธ + - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ธฐ + - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ด๋ฉฐ, ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ + - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ + +- [ ] **๋กœ๋˜ ๋‹น์ฒจ ํ™•์ธ** + - [ ] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๊ฐ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต + - [ ] ๋‹น์ฒจ ๊ธฐ์ค€์— ๋”ฐ๋ผ 1๋“ฑ๋ถ€ํ„ฐ 5๋“ฑ๊นŒ์ง€ ๋‹น์ฒจ ์—ฌ๋ถ€์™€ ๊ฐœ์ˆ˜๋ฅผ ํŒ๋ณ„ + +- [ ] **๋‹น์ฒจ ๋‚ด์—ญ ์ถœ๋ ฅ** + - [ ] ๊ฐ ๋“ฑ์ˆ˜๋ณ„ ์ผ์น˜ํ•˜๋Š” ๋กœ๋˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ + - [ ] ๋‹น์ฒจ ๊ธˆ์•ก์„ ๊ฐ ๋“ฑ์ˆ˜๋ณ„๋กœ ์ถœ๋ ฅ ํ˜•์‹์— ๋งž๊ฒŒ ํ‘œ์‹œ + +- [ ] **์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ** + - [ ] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ์ด ๊ธˆ์•ก๊ณผ ๋‹น์ฒจ ๊ธˆ์•ก์„ ๋น„๊ตํ•˜์—ฌ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ + - [ ] ์ˆ˜์ต๋ฅ ์„ ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅ + +- [ ] **์˜ˆ์™ธ ์ฒ˜๋ฆฌ** + - [ ] ์ž…๋ ฅ ๊ฐ’์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ `IllegalArgumentException`์„ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ + - [ ] ์ž˜๋ชป๋œ ๊ฐ’์ด ์ž…๋ ฅ๋  ๊ฒฝ์šฐ ํ•ด๋‹น ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋‹ค์‹œ ๋ฐ›๋„๋ก ๊ตฌํ˜„ \ No newline at end of file From c3139720c4fc1df1a31142308ae9216d8b87aa78 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 13:07:20 +0900 Subject: [PATCH 02/42] =?UTF-8?q?refactor:=20Lotto=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=ED=8C=A8=ED=82=A4=EC=A7=80=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/{lotto => domain}/Lotto.java | 2 +- src/test/java/lotto/LottoTest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) rename src/main/java/{lotto => domain}/Lotto.java (96%) diff --git a/src/main/java/lotto/Lotto.java b/src/main/java/domain/Lotto.java similarity index 96% rename from src/main/java/lotto/Lotto.java rename to src/main/java/domain/Lotto.java index 88fc5cf12b..c8db8aa757 100644 --- a/src/main/java/lotto/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -1,4 +1,4 @@ -package lotto; +package domain; import java.util.List; diff --git a/src/test/java/lotto/LottoTest.java b/src/test/java/lotto/LottoTest.java index 309f4e50ae..f338bdd0d3 100644 --- a/src/test/java/lotto/LottoTest.java +++ b/src/test/java/lotto/LottoTest.java @@ -1,5 +1,6 @@ package lotto; +import domain.Lotto; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; From 81d4d9fdb4c7a7bc7207de641d86c23314671405 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 14:53:46 +0900 Subject: [PATCH 03/42] =?UTF-8?q?refactor:=20TODO=20=EB=9D=BC=EC=9D=B8=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Lotto.java | 2 -- src/main/java/lotto/Application.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index c8db8aa757..f661e0ac46 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -15,6 +15,4 @@ private void validate(List numbers) { throw new IllegalArgumentException("[ERROR] ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 6๊ฐœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); } } - - // TODO: ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ } diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/Application.java index d190922ba4..0020e03240 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/Application.java @@ -2,6 +2,6 @@ public class Application { public static void main(String[] args) { - // TODO: ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ + } } From 8c0afe4ae50276cc7da60df52de5e59d9a833b01 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 14:54:29 +0900 Subject: [PATCH 04/42] =?UTF-8?q?refactor:=20=EB=A1=9C=EB=98=90=20?= =?UTF-8?q?=EA=B5=AC=EC=9E=85=20=EA=B8=88=EC=95=A1=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?view=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/main/java/view/InputView.java diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java new file mode 100644 index 0000000000..9337081968 --- /dev/null +++ b/src/main/java/view/InputView.java @@ -0,0 +1,11 @@ +package view; + +import camp.nextstep.edu.missionutils.Console; + +public class InputView { + + public static void inputLottoPurchase() { + System.out.println("๊ตฌ์ž… ๊ธˆ์•ก์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."); + Console.readLine(); + } +} From 4f9ddf7ba0c1b87a5152ac13381dfeeabae64fac Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 14:54:41 +0900 Subject: [PATCH 05/42] =?UTF-8?q?refactor:=20=EB=A1=9C=EB=98=90=20?= =?UTF-8?q?=EB=8B=B9=EC=B2=A8=20=EB=B2=88=ED=98=B8=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?view=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 9337081968..a99a249a7c 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -8,4 +8,9 @@ public static void inputLottoPurchase() { System.out.println("๊ตฌ์ž… ๊ธˆ์•ก์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."); Console.readLine(); } + + public static void inputLottoNumber() { + System.out.println("๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."); + Console.readLine(); + } } From 58b87060cbf463a9c3e6144b09c5e61f0edebc01 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 15:42:39 +0900 Subject: [PATCH 06/42] =?UTF-8?q?refactor:=20=EB=B3=B4=EB=84=88=EC=8A=A4?= =?UTF-8?q?=20=EB=B2=88=ED=98=B8=20=EC=9E=85=EB=A0=A5=20view=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a99a249a7c..a52b07a82c 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -13,4 +13,9 @@ public static void inputLottoNumber() { System.out.println("๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."); Console.readLine(); } + + public static void inputBonusNumber() { + System.out.println("๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”"); + Console.readLine(); + } } From 45302f5dee4406674ce94e8b31bbd86f04530b71 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 15:45:11 +0900 Subject: [PATCH 07/42] =?UTF-8?q?refactor:=20inputView=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=20=ED=83=80=EC=9E=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a52b07a82c..6fae561a0b 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -4,18 +4,18 @@ public class InputView { - public static void inputLottoPurchase() { + public static String inputLottoPurchase() { System.out.println("๊ตฌ์ž… ๊ธˆ์•ก์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."); - Console.readLine(); + return Console.readLine(); } - public static void inputLottoNumber() { + public static String inputLottoNumber() { System.out.println("๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."); - Console.readLine(); + return Console.readLine(); } - public static void inputBonusNumber() { + public static String inputBonusNumber() { System.out.println("๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”"); - Console.readLine(); + return Console.readLine(); } } From 3a89f3ee50909b61efc96b35341ab62ada64ab75 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 16:03:52 +0900 Subject: [PATCH 08/42] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a436b8e75c..ce3f89f744 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ - - [ ] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ด๋ฉฐ, ์ค‘๋ณต์ด ์—†๋Š”์ง€ ํ™•์ธ + - [ ] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ธฐ - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ด๋ฉฐ, ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ From fe58d84277ef465821d467e71fd444c283379145 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 16:04:33 +0900 Subject: [PATCH 09/42] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ce3f89f744..32a6a17318 100644 --- a/README.md +++ b/README.md @@ -84,9 +84,10 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ - - [ ] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ + - [x] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ธฐ - - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ด๋ฉฐ, ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ + - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ + - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ - [ ] **๋กœ๋˜ ๋‹น์ฒจ ํ™•์ธ** From d8def1fef5542192faf7ebb9c74a2a504ad3db36 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 21:12:30 +0900 Subject: [PATCH 10/42] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 32a6a17318..bfbc06f77d 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] **๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก ์ž…๋ ฅ ๋ฐ›๊ธฐ** - [ ] 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅ๋œ ๊ธˆ์•ก์ธ์ง€ ํ™•์ธ - - [ ] ์ž…๋ ฅ ๊ธˆ์•ก์ด 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์œผ๋ฉด `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ + - [ ] ์ž…๋ ฅ ๊ธˆ์•ก์ด 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ - [ ] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** - [ ] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ @@ -85,10 +85,9 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ - [x] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ธฐ - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ - - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋‹ค์‹œ ์ž…๋ ฅ ๋ฐ›๊ธฐ + - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ - [ ] **๋กœ๋˜ ๋‹น์ฒจ ํ™•์ธ** - [ ] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๊ฐ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต From 5b71c68b0096a6e28b92bbd26775a74630f63a0f Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 21:13:45 +0900 Subject: [PATCH 11/42] =?UTF-8?q?refactor:=20=EC=9E=85=EB=A0=A5=EB=90=9C?= =?UTF-8?q?=20=EB=A1=9C=EB=98=90=20=EB=B2=88=ED=98=B8=EA=B0=80=201?= =?UTF-8?q?=EB=B6=80=ED=84=B0=2045=20=EC=82=AC=EC=9D=B4=EC=9D=98=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=EC=9D=B8=EC=A7=80=20=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Lotto.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index f661e0ac46..e812b6e085 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -6,13 +6,22 @@ public class Lotto { private final List numbers; public Lotto(List numbers) { - validate(numbers); + validateQuantity(numbers); + validateNumberRange(numbers); this.numbers = numbers; } - private void validate(List numbers) { + private void validateQuantity(List numbers) { if (numbers.size() != 6) { throw new IllegalArgumentException("[ERROR] ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 6๊ฐœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); } } + + private void validateNumberRange(List numbers) { + for(Integer number : numbers) { + if (number < 0 || number > 6) { + throw new IllegalArgumentException("[ERROR] ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ˆซ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); + } + } + } } From 9b29e2743c20d5b9005303a8dbc511841e4835d5 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 21:20:07 +0900 Subject: [PATCH 12/42] =?UTF-8?q?feat:=20=EC=83=9D=EC=84=B1=EB=90=9C=20?= =?UTF-8?q?=EB=A1=9C=EB=98=90=20=EB=B2=88=ED=98=B8=EB=A5=BC=20=EC=98=A4?= =?UTF-8?q?=EB=A6=84=EC=B0=A8=EC=88=9C=EC=9C=BC=EB=A1=9C=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/domain/Lotto.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bfbc06f77d..09a43147c2 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** - [ ] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ - [ ] ๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฒ”์œ„(1~45) ๋‚ด์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ - - [ ] ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ + - [x] ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ - [ ] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ - [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index e812b6e085..a5bd5c1216 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -1,5 +1,6 @@ package domain; +import java.util.Collections; import java.util.List; public class Lotto { @@ -9,6 +10,7 @@ public Lotto(List numbers) { validateQuantity(numbers); validateNumberRange(numbers); this.numbers = numbers; + sortNumbers(this.numbers); } private void validateQuantity(List numbers) { @@ -24,4 +26,8 @@ private void validateNumberRange(List numbers) { } } } + + private void sortNumbers(List numbers) { + Collections.sort(numbers); + } } From 0e4d803d56631a4fc021d6220380f7a69fe983f6 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 21:21:35 +0900 Subject: [PATCH 13/42] =?UTF-8?q?feat:=20=EB=A1=9C=EB=98=90=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EB=B0=98=ED=99=98=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Lotto.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index a5bd5c1216..30ad7a2ce1 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -13,6 +13,10 @@ public Lotto(List numbers) { sortNumbers(this.numbers); } + public List getNumbers() { + return numbers; + } + private void validateQuantity(List numbers) { if (numbers.size() != 6) { throw new IllegalArgumentException("[ERROR] ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 6๊ฐœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); From 54a108674701c4f05d2ec4f30aecc92ca2c6e49a Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 21:47:33 +0900 Subject: [PATCH 14/42] =?UTF-8?q?feat:=20=EB=A1=9C=EB=98=90=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=83=9D=EC=84=B1=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/application/LottoGenerator.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/main/java/application/LottoGenerator.java diff --git a/README.md b/README.md index 09a43147c2..a4fe759d15 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** - [ ] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ - - [ ] ๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฒ”์œ„(1~45) ๋‚ด์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ + - [x] ๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฒ”์œ„(1~45) ๋‚ด์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ - [x] ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ - [ ] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ diff --git a/src/main/java/application/LottoGenerator.java b/src/main/java/application/LottoGenerator.java new file mode 100644 index 0000000000..953580c00b --- /dev/null +++ b/src/main/java/application/LottoGenerator.java @@ -0,0 +1,14 @@ +package application; + +import camp.nextstep.edu.missionutils.Randoms; +import domain.Lotto; + +import java.util.List; + +public class LottoGenerator { + + public Lotto generate() { + List LottoNumbers = Randoms.pickUniqueNumbersInRange(1, 45, 6); + return Lotto.of(LottoNumbers); + } +} From 946a3bcf19ca6ae59835c145dd8c0cceb7a00906 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 21:49:06 +0900 Subject: [PATCH 15/42] =?UTF-8?q?feat:=20=EB=A1=9C=EB=98=90=20=EA=B5=AC?= =?UTF-8?q?=EB=A7=A4=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/application/LottoService.java | 27 +++++++++++++++++++++ src/main/java/domain/Lotto.java | 4 +++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/main/java/application/LottoService.java diff --git a/README.md b/README.md index a4fe759d15..d9c2c82d23 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] ์ž…๋ ฅ ๊ธˆ์•ก์ด 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ - [ ] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** - - [ ] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ + - [x] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ - [x] ๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฒ”์œ„(1~45) ๋‚ด์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ - [x] ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ - [ ] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ diff --git a/src/main/java/application/LottoService.java b/src/main/java/application/LottoService.java new file mode 100644 index 0000000000..7b5b1a1efa --- /dev/null +++ b/src/main/java/application/LottoService.java @@ -0,0 +1,27 @@ +package application; + +import domain.Lotto; + +import java.util.ArrayList; +import java.util.List; + +public class LottoService { + + private static final int LOTTO_PRICE = 1000; + private final LottoGenerator lottoGenerator; + + public LottoService(LottoGenerator lottoGenerator) { + this.lottoGenerator = lottoGenerator; + } + + public List buyLottos(int price) { + List lottos = new ArrayList<>(); + for(int i = 0; i < price / LOTTO_PRICE; i++) { + lottos.add(lottoGenerator.generate()); + } + return lottos; + } + + + +} diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index 30ad7a2ce1..4e9143f3c1 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -13,6 +13,10 @@ public Lotto(List numbers) { sortNumbers(this.numbers); } + public static Lotto of(List numbers) { + return new Lotto(numbers); + } + public List getNumbers() { return numbers; } From cc9d9b7707710d504aa49a548900eced4477dc99 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:03:30 +0900 Subject: [PATCH 16/42] =?UTF-8?q?feat:=20=EB=A1=9C=EB=98=90=20=EC=83=81?= =?UTF-8?q?=EA=B8=88=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/global/LottoPrize.java | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/java/global/LottoPrize.java diff --git a/src/main/java/global/LottoPrize.java b/src/main/java/global/LottoPrize.java new file mode 100644 index 0000000000..dc477e0ba7 --- /dev/null +++ b/src/main/java/global/LottoPrize.java @@ -0,0 +1,34 @@ +package global; + +public enum LottoPrize { + + FIRST(6, false, "2,000,000"), + SECOND(5, true, "30,000,000"), + THIRD(5, false, "1,500,000"), + FOURTH(4, false, "50,000"), + FIFTH(3, false, "5,000"), + NONE(0, false, "0"); + + private final int matchNumberCount; + private final boolean matchBonusNumber; + private final String prizeMoney; + + LottoPrize(int matchNumberCount, boolean matchBonusNumber, String prizeMoney) { + this.matchNumberCount = matchNumberCount; + this.matchBonusNumber = matchBonusNumber; + this.prizeMoney = prizeMoney; + } + + public String getPrizeMoney() { + return prizeMoney; + } + + public static LottoPrize from(int matchNumberCount, boolean matchBonusNumber) { + for (LottoPrize prize : values()) { + if (prize.matchNumberCount == matchNumberCount && prize.matchBonusNumber == matchBonusNumber) { + return prize; + } + } + return NONE; + } +} From ee6e1672fbdd9cadce938f9293088f4209addddc Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:09:28 +0900 Subject: [PATCH 17/42] =?UTF-8?q?feat:=20=EB=8B=B9=EC=B2=A8=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EB=B9=84=EA=B5=90=20=EB=A1=9C=EC=A7=81=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/application/LottoService.java | 11 +++++++++++ src/main/java/global/LottoPrize.java | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d9c2c82d23..5004d68f83 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ - [ ] **๋กœ๋˜ ๋‹น์ฒจ ํ™•์ธ** - - [ ] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๊ฐ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต + - [x] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๊ฐ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต - [ ] ๋‹น์ฒจ ๊ธฐ์ค€์— ๋”ฐ๋ผ 1๋“ฑ๋ถ€ํ„ฐ 5๋“ฑ๊นŒ์ง€ ๋‹น์ฒจ ์—ฌ๋ถ€์™€ ๊ฐœ์ˆ˜๋ฅผ ํŒ๋ณ„ - [ ] **๋‹น์ฒจ ๋‚ด์—ญ ์ถœ๋ ฅ** diff --git a/src/main/java/application/LottoService.java b/src/main/java/application/LottoService.java index 7b5b1a1efa..58929207e0 100644 --- a/src/main/java/application/LottoService.java +++ b/src/main/java/application/LottoService.java @@ -1,6 +1,7 @@ package application; import domain.Lotto; +import global.LottoPrize; import java.util.ArrayList; import java.util.List; @@ -16,12 +17,22 @@ public LottoService(LottoGenerator lottoGenerator) { public List buyLottos(int price) { List lottos = new ArrayList<>(); + for(int i = 0; i < price / LOTTO_PRICE; i++) { lottos.add(lottoGenerator.generate()); } + return lottos; } + public LottoPrize calculatePrize(Lotto myLotto, Lotto LottoResult, int bonusNumber) { + long matchLottoCount = myLotto.getNumbers().stream() + .filter(LottoResult.getNumbers()::contains) + .count(); + boolean matchBonusNumber = myLotto.getNumbers().contains(bonusNumber); + + return LottoPrize.from(matchLottoCount, matchBonusNumber); + } } diff --git a/src/main/java/global/LottoPrize.java b/src/main/java/global/LottoPrize.java index dc477e0ba7..85c526d796 100644 --- a/src/main/java/global/LottoPrize.java +++ b/src/main/java/global/LottoPrize.java @@ -23,7 +23,7 @@ public String getPrizeMoney() { return prizeMoney; } - public static LottoPrize from(int matchNumberCount, boolean matchBonusNumber) { + public static LottoPrize from(long matchNumberCount, boolean matchBonusNumber) { for (LottoPrize prize : values()) { if (prize.matchNumberCount == matchNumberCount && prize.matchBonusNumber == matchBonusNumber) { return prize; From 557eacb739988cd217c857b97fb57f354f4955e7 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:22:57 +0900 Subject: [PATCH 18/42] =?UTF-8?q?feat:=20=EC=B6=9C=EB=A0=A5=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=9E=91=EC=84=B1=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++----- src/main/java/global/LottoPrize.java | 4 ++++ src/main/java/view/OutputView.java | 26 ++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 src/main/java/view/OutputView.java diff --git a/README.md b/README.md index 5004d68f83..bfe249d0d8 100644 --- a/README.md +++ b/README.md @@ -76,11 +76,11 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅ๋œ ๊ธˆ์•ก์ธ์ง€ ํ™•์ธ - [ ] ์ž…๋ ฅ ๊ธˆ์•ก์ด 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ -- [ ] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** +- [x] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** - [x] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ - [x] ๋กœ๋˜ ๋ฒˆํ˜ธ ๋ฒ”์œ„(1~45) ๋‚ด์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ - [x] ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ - - [ ] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ + - [x] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ - [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ @@ -93,9 +93,9 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [x] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๊ฐ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต - [ ] ๋‹น์ฒจ ๊ธฐ์ค€์— ๋”ฐ๋ผ 1๋“ฑ๋ถ€ํ„ฐ 5๋“ฑ๊นŒ์ง€ ๋‹น์ฒจ ์—ฌ๋ถ€์™€ ๊ฐœ์ˆ˜๋ฅผ ํŒ๋ณ„ -- [ ] **๋‹น์ฒจ ๋‚ด์—ญ ์ถœ๋ ฅ** - - [ ] ๊ฐ ๋“ฑ์ˆ˜๋ณ„ ์ผ์น˜ํ•˜๋Š” ๋กœ๋˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ - - [ ] ๋‹น์ฒจ ๊ธˆ์•ก์„ ๊ฐ ๋“ฑ์ˆ˜๋ณ„๋กœ ์ถœ๋ ฅ ํ˜•์‹์— ๋งž๊ฒŒ ํ‘œ์‹œ +- [x] **๋‹น์ฒจ ๋‚ด์—ญ ์ถœ๋ ฅ** + - [x] ๊ฐ ๋“ฑ์ˆ˜๋ณ„ ์ผ์น˜ํ•˜๋Š” ๋กœ๋˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ + - [x] ๋‹น์ฒจ ๊ธˆ์•ก์„ ๊ฐ ๋“ฑ์ˆ˜๋ณ„๋กœ ์ถœ๋ ฅ ํ˜•์‹์— ๋งž๊ฒŒ ํ‘œ์‹œ - [ ] **์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ** - [ ] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ์ด ๊ธˆ์•ก๊ณผ ๋‹น์ฒจ ๊ธˆ์•ก์„ ๋น„๊ตํ•˜์—ฌ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ diff --git a/src/main/java/global/LottoPrize.java b/src/main/java/global/LottoPrize.java index 85c526d796..97eda5e6e0 100644 --- a/src/main/java/global/LottoPrize.java +++ b/src/main/java/global/LottoPrize.java @@ -19,6 +19,10 @@ public enum LottoPrize { this.prizeMoney = prizeMoney; } + public int getMatchNumberCount() { + return matchNumberCount; + } + public String getPrizeMoney() { return prizeMoney; } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java new file mode 100644 index 0000000000..e541ef1d32 --- /dev/null +++ b/src/main/java/view/OutputView.java @@ -0,0 +1,26 @@ +package view; + +import domain.Lotto; +import global.LottoPrize; + +import java.util.List; + +public class OutputView { + + public static void printLottos(List lottos) { + System.out.println(lottos.size() + "๊ฐœ๋ฅผ ๊ตฌ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค."); + lottos.forEach(lotto -> System.out.println(lotto.getNumbers())); + } + + public static void printResult(List results) { + for (LottoPrize prize : LottoPrize.values()) { + if (prize == LottoPrize.NONE) continue; + long count = results.stream().filter(prize::equals).count(); + System.out.println(prize.getMatchNumberCount() + "๊ฐœ ์ผ์น˜ " + "(" + prize.getPrizeMoney() + "์›) - " + count + "๊ฐœ"); + } + } + + public static void printProfit(double profit) { + System.out.printf("์ด ์ˆ˜์ต๋ฅ ์€ %.1f%%์ž…๋‹ˆ๋‹ค.%n", profit * 100); + } +} From 6f961fa8cbf45b14a505117b29516e31fb8ff537 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:23:22 +0900 Subject: [PATCH 19/42] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EA=B0=9C=ED=96=89=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/application/LottoService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/application/LottoService.java b/src/main/java/application/LottoService.java index 58929207e0..bc97b20ff2 100644 --- a/src/main/java/application/LottoService.java +++ b/src/main/java/application/LottoService.java @@ -34,5 +34,4 @@ public LottoPrize calculatePrize(Lotto myLotto, Lotto LottoResult, int bonusNumb return LottoPrize.from(matchLottoCount, matchBonusNumber); } - } From 8b8f6a5423954484c752d396032588ed4c9201c4 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:33:43 +0900 Subject: [PATCH 20/42] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bfe249d0d8..39a7b110fe 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] **์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ** - [ ] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ์ด ๊ธˆ์•ก๊ณผ ๋‹น์ฒจ ๊ธˆ์•ก์„ ๋น„๊ตํ•˜์—ฌ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ - - [ ] ์ˆ˜์ต๋ฅ ์„ ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅ + - [x] ์ˆ˜์ต๋ฅ ์„ ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅ - [ ] **์˜ˆ์™ธ ์ฒ˜๋ฆฌ** - [ ] ์ž…๋ ฅ ๊ฐ’์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ `IllegalArgumentException`์„ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ From ad2d35a9c912543ccfde6795f56e85dd08b39af1 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:42:27 +0900 Subject: [PATCH 21/42] =?UTF-8?q?feat:=20=EC=88=98=EC=9D=B5=EB=A5=A0=20?= =?UTF-8?q?=EA=B3=84=EC=82=B0=20=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- src/main/java/application/LottoService.java | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 39a7b110fe..dcc2e0d9ae 100644 --- a/README.md +++ b/README.md @@ -97,8 +97,8 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [x] ๊ฐ ๋“ฑ์ˆ˜๋ณ„ ์ผ์น˜ํ•˜๋Š” ๋กœ๋˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ - [x] ๋‹น์ฒจ ๊ธˆ์•ก์„ ๊ฐ ๋“ฑ์ˆ˜๋ณ„๋กœ ์ถœ๋ ฅ ํ˜•์‹์— ๋งž๊ฒŒ ํ‘œ์‹œ -- [ ] **์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ** - - [ ] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ์ด ๊ธˆ์•ก๊ณผ ๋‹น์ฒจ ๊ธˆ์•ก์„ ๋น„๊ตํ•˜์—ฌ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ +- [x] **์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ** + - [x] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ์ด ๊ธˆ์•ก๊ณผ ๋‹น์ฒจ ๊ธˆ์•ก์„ ๋น„๊ตํ•˜์—ฌ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ - [x] ์ˆ˜์ต๋ฅ ์„ ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅ - [ ] **์˜ˆ์™ธ ์ฒ˜๋ฆฌ** diff --git a/src/main/java/application/LottoService.java b/src/main/java/application/LottoService.java index bc97b20ff2..7cdfa6695f 100644 --- a/src/main/java/application/LottoService.java +++ b/src/main/java/application/LottoService.java @@ -34,4 +34,12 @@ public LottoPrize calculatePrize(Lotto myLotto, Lotto LottoResult, int bonusNumb return LottoPrize.from(matchLottoCount, matchBonusNumber); } + + public Double calculateProfitRate(List results, int purchaseQuantity) { + int totalPrize = results.stream() + .map(result -> result.getPrizeMoney().replace(",", "")) + .mapToInt(Integer::parseInt) + .sum(); + return (double) totalPrize / purchaseQuantity; + } } From 2e523788e776ad26d1ad382c5555280d29556328 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:42:48 +0900 Subject: [PATCH 22/42] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dcc2e0d9ae..a3ac1993d4 100644 --- a/README.md +++ b/README.md @@ -89,9 +89,9 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ -- [ ] **๋กœ๋˜ ๋‹น์ฒจ ํ™•์ธ** +- [x] **๋กœ๋˜ ๋‹น์ฒจ ํ™•์ธ** - [x] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๊ฐ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต - - [ ] ๋‹น์ฒจ ๊ธฐ์ค€์— ๋”ฐ๋ผ 1๋“ฑ๋ถ€ํ„ฐ 5๋“ฑ๊นŒ์ง€ ๋‹น์ฒจ ์—ฌ๋ถ€์™€ ๊ฐœ์ˆ˜๋ฅผ ํŒ๋ณ„ + - [x] ๋‹น์ฒจ ๊ธฐ์ค€์— ๋”ฐ๋ผ 1๋“ฑ๋ถ€ํ„ฐ 5๋“ฑ๊นŒ์ง€ ๋‹น์ฒจ ์—ฌ๋ถ€์™€ ๊ฐœ์ˆ˜๋ฅผ ํŒ๋ณ„ - [x] **๋‹น์ฒจ ๋‚ด์—ญ ์ถœ๋ ฅ** - [x] ๊ฐ ๋“ฑ์ˆ˜๋ณ„ ์ผ์น˜ํ•˜๋Š” ๋กœ๋˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ From 287835e7f06b02ca160b0374b1e92e9ff81cc461 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:44:04 +0900 Subject: [PATCH 23/42] =?UTF-8?q?refactor:=20=ED=8C=A8=ED=82=A4=EC=A7=80?= =?UTF-8?q?=20=EC=A0=84=EC=B2=B4=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/{ => lotto}/application/LottoGenerator.java | 4 ++-- src/main/java/{ => lotto}/application/LottoService.java | 6 +++--- src/main/java/{ => lotto}/domain/Lotto.java | 2 +- src/main/java/{ => lotto}/global/LottoPrize.java | 2 +- src/main/java/{ => lotto}/view/InputView.java | 2 +- src/main/java/{ => lotto}/view/OutputView.java | 6 +++--- src/test/java/lotto/LottoTest.java | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) rename src/main/java/{ => lotto}/application/LottoGenerator.java (82%) rename src/main/java/{ => lotto}/application/LottoService.java (93%) rename src/main/java/{ => lotto}/domain/Lotto.java (98%) rename src/main/java/{ => lotto}/global/LottoPrize.java (97%) rename src/main/java/{ => lotto}/view/InputView.java (96%) rename src/main/java/{ => lotto}/view/OutputView.java (91%) diff --git a/src/main/java/application/LottoGenerator.java b/src/main/java/lotto/application/LottoGenerator.java similarity index 82% rename from src/main/java/application/LottoGenerator.java rename to src/main/java/lotto/application/LottoGenerator.java index 953580c00b..729939261b 100644 --- a/src/main/java/application/LottoGenerator.java +++ b/src/main/java/lotto/application/LottoGenerator.java @@ -1,7 +1,7 @@ -package application; +package lotto.application; import camp.nextstep.edu.missionutils.Randoms; -import domain.Lotto; +import lotto.domain.Lotto; import java.util.List; diff --git a/src/main/java/application/LottoService.java b/src/main/java/lotto/application/LottoService.java similarity index 93% rename from src/main/java/application/LottoService.java rename to src/main/java/lotto/application/LottoService.java index 7cdfa6695f..10ee7e65c0 100644 --- a/src/main/java/application/LottoService.java +++ b/src/main/java/lotto/application/LottoService.java @@ -1,7 +1,7 @@ -package application; +package lotto.application; -import domain.Lotto; -import global.LottoPrize; +import lotto.domain.Lotto; +import lotto.global.LottoPrize; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/domain/Lotto.java b/src/main/java/lotto/domain/Lotto.java similarity index 98% rename from src/main/java/domain/Lotto.java rename to src/main/java/lotto/domain/Lotto.java index 4e9143f3c1..120a359f4f 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/lotto/domain/Lotto.java @@ -1,4 +1,4 @@ -package domain; +package lotto.domain; import java.util.Collections; import java.util.List; diff --git a/src/main/java/global/LottoPrize.java b/src/main/java/lotto/global/LottoPrize.java similarity index 97% rename from src/main/java/global/LottoPrize.java rename to src/main/java/lotto/global/LottoPrize.java index 97eda5e6e0..3066320735 100644 --- a/src/main/java/global/LottoPrize.java +++ b/src/main/java/lotto/global/LottoPrize.java @@ -1,4 +1,4 @@ -package global; +package lotto.global; public enum LottoPrize { diff --git a/src/main/java/view/InputView.java b/src/main/java/lotto/view/InputView.java similarity index 96% rename from src/main/java/view/InputView.java rename to src/main/java/lotto/view/InputView.java index 6fae561a0b..d84b781de5 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/lotto/view/InputView.java @@ -1,4 +1,4 @@ -package view; +package lotto.view; import camp.nextstep.edu.missionutils.Console; diff --git a/src/main/java/view/OutputView.java b/src/main/java/lotto/view/OutputView.java similarity index 91% rename from src/main/java/view/OutputView.java rename to src/main/java/lotto/view/OutputView.java index e541ef1d32..1a67dec93e 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/lotto/view/OutputView.java @@ -1,7 +1,7 @@ -package view; +package lotto.view; -import domain.Lotto; -import global.LottoPrize; +import lotto.domain.Lotto; +import lotto.global.LottoPrize; import java.util.List; diff --git a/src/test/java/lotto/LottoTest.java b/src/test/java/lotto/LottoTest.java index f338bdd0d3..c74fb4b676 100644 --- a/src/test/java/lotto/LottoTest.java +++ b/src/test/java/lotto/LottoTest.java @@ -1,6 +1,6 @@ package lotto; -import domain.Lotto; +import lotto.domain.Lotto; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; From c39e642041f30f7623baf971f9d8e3061a9ab57e Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:51:10 +0900 Subject: [PATCH 24/42] =?UTF-8?q?feat:=20=EC=9E=85=EB=A0=A5=EA=B0=92=20?= =?UTF-8?q?=ED=8C=8C=EC=8B=B1=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/parser/InputParser.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/lotto/parser/InputParser.java diff --git a/src/main/java/lotto/parser/InputParser.java b/src/main/java/lotto/parser/InputParser.java new file mode 100644 index 0000000000..32811850f3 --- /dev/null +++ b/src/main/java/lotto/parser/InputParser.java @@ -0,0 +1,15 @@ +package lotto.parser; + +import java.util.Arrays; +import java.util.List; + +public class InputParser { + + public static int parseLottoPrice(String lottoPrice) { + return Integer.parseInt(lottoPrice); + } + + public static List parseLottoNumber(String lottoNumber) { + return Arrays.asList(lottoNumber.split(",")); + } +} From 69888704305c6004ac333fbb0b5077d5932bb325 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:51:29 +0900 Subject: [PATCH 25/42] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3ac1993d4..07dbcd906e 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [x] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ - [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** - - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ + - [x] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ - [x] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ From e0fba18f6ed8e8420610226a613a355bea0619f8 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:56:57 +0900 Subject: [PATCH 26/42] =?UTF-8?q?refactor:=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A5=BC=20=EC=8B=B1?= =?UTF-8?q?=EA=B8=80=ED=86=A4=EC=9C=BC=EB=A1=9C=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/application/LottoService.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/lotto/application/LottoService.java b/src/main/java/lotto/application/LottoService.java index 10ee7e65c0..97eb67d5f1 100644 --- a/src/main/java/lotto/application/LottoService.java +++ b/src/main/java/lotto/application/LottoService.java @@ -9,12 +9,20 @@ public class LottoService { private static final int LOTTO_PRICE = 1000; + private static LottoService instance; private final LottoGenerator lottoGenerator; - public LottoService(LottoGenerator lottoGenerator) { + private LottoService(LottoGenerator lottoGenerator) { this.lottoGenerator = lottoGenerator; } + public static LottoService getInstance(LottoGenerator lottoGenerator) { + if (instance == null) { + instance = new LottoService(lottoGenerator); + } + return instance; + } + public List buyLottos(int price) { List lottos = new ArrayList<>(); From 5bdab531f0f1cb3556a0baa50ca2fec23d460776 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 22:58:05 +0900 Subject: [PATCH 27/42] =?UTF-8?q?refactor:=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A5=BC=20=EC=8B=B1?= =?UTF-8?q?=EA=B8=80=ED=86=A4=EC=9C=BC=EB=A1=9C=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/application/LottoGenerator.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/lotto/application/LottoGenerator.java b/src/main/java/lotto/application/LottoGenerator.java index 729939261b..06332aa660 100644 --- a/src/main/java/lotto/application/LottoGenerator.java +++ b/src/main/java/lotto/application/LottoGenerator.java @@ -7,6 +7,19 @@ public class LottoGenerator { + private static LottoGenerator instance; + + private LottoGenerator() { + + } + + public static LottoGenerator getInstance() { + if (instance == null) { + instance = new LottoGenerator(); + } + return instance; + } + public Lotto generate() { List LottoNumbers = Randoms.pickUniqueNumbersInRange(1, 45, 6); return Lotto.of(LottoNumbers); From 8b4713fee6b2290ebfb1e1bb0566ff538c4eef34 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:12:57 +0900 Subject: [PATCH 28/42] =?UTF-8?q?refactor:=20=EB=A1=9C=EB=98=90=20?= =?UTF-8?q?=EB=B2=88=ED=98=B8=20=ED=8C=8C=EC=8B=B1=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/parser/InputParser.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/lotto/parser/InputParser.java b/src/main/java/lotto/parser/InputParser.java index 32811850f3..eb963f31f6 100644 --- a/src/main/java/lotto/parser/InputParser.java +++ b/src/main/java/lotto/parser/InputParser.java @@ -2,6 +2,7 @@ import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class InputParser { @@ -9,7 +10,10 @@ public static int parseLottoPrice(String lottoPrice) { return Integer.parseInt(lottoPrice); } - public static List parseLottoNumber(String lottoNumber) { - return Arrays.asList(lottoNumber.split(",")); + public static List parseLottoNumber(String lottoNumber) { + List lottoNumbers = Arrays.asList(lottoNumber.split(",")); + return lottoNumbers.stream() + .map(Integer::parseInt) + .collect(Collectors.toList()); } } From a23a05f3c316aa528168c6c723147922f86093e9 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:14:17 +0900 Subject: [PATCH 29/42] =?UTF-8?q?refactor:=20=EB=B3=B4=EB=84=88=EC=8A=A4?= =?UTF-8?q?=20=EB=B2=88=ED=98=B8=20=ED=8C=8C=EC=8B=B1=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/parser/InputParser.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/lotto/parser/InputParser.java b/src/main/java/lotto/parser/InputParser.java index eb963f31f6..593d6eabb7 100644 --- a/src/main/java/lotto/parser/InputParser.java +++ b/src/main/java/lotto/parser/InputParser.java @@ -16,4 +16,8 @@ public static List parseLottoNumber(String lottoNumber) { .map(Integer::parseInt) .collect(Collectors.toList()); } + + public static int parseBonusNumber(String bonusNumber) { + return Integer.parseInt(bonusNumber); + } } From 4089a624519d955d329d1c6ad9e1f8fac0c61df3 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:20:47 +0900 Subject: [PATCH 30/42] =?UTF-8?q?fix:=20=EB=A1=9C=EB=98=90=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/domain/Lotto.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/lotto/domain/Lotto.java b/src/main/java/lotto/domain/Lotto.java index 120a359f4f..f5534ade91 100644 --- a/src/main/java/lotto/domain/Lotto.java +++ b/src/main/java/lotto/domain/Lotto.java @@ -29,7 +29,7 @@ private void validateQuantity(List numbers) { private void validateNumberRange(List numbers) { for(Integer number : numbers) { - if (number < 0 || number > 6) { + if (number < 0 || number > 45) { throw new IllegalArgumentException("[ERROR] ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ˆซ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); } } From 72d893f2279b107c6757d2787179813cbb6584e5 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:23:01 +0900 Subject: [PATCH 31/42] =?UTF-8?q?fix:=20=EC=83=81=EA=B8=88=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/global/LottoPrize.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/lotto/global/LottoPrize.java b/src/main/java/lotto/global/LottoPrize.java index 3066320735..c7dafdb504 100644 --- a/src/main/java/lotto/global/LottoPrize.java +++ b/src/main/java/lotto/global/LottoPrize.java @@ -2,7 +2,7 @@ public enum LottoPrize { - FIRST(6, false, "2,000,000"), + FIRST(6, false, "2,000,000,000"), SECOND(5, true, "30,000,000"), THIRD(5, false, "1,500,000"), FOURTH(4, false, "50,000"), From 53b8ab756642be2ee8f3ad9eea22245b76bd62ea Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:30:51 +0900 Subject: [PATCH 32/42] =?UTF-8?q?refactor:=20=EB=8B=B9=EC=B2=A8=20?= =?UTF-8?q?=ED=86=B5=EA=B3=84=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/global/LottoPrize.java | 7 +++++++ src/main/java/lotto/view/OutputView.java | 15 ++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/lotto/global/LottoPrize.java b/src/main/java/lotto/global/LottoPrize.java index c7dafdb504..25a1b5c3df 100644 --- a/src/main/java/lotto/global/LottoPrize.java +++ b/src/main/java/lotto/global/LottoPrize.java @@ -35,4 +35,11 @@ public static LottoPrize from(long matchNumberCount, boolean matchBonusNumber) { } return NONE; } + + public String getMatchDescription() { + if (matchBonusNumber) { + return matchNumberCount + "๊ฐœ ์ผ์น˜, ๋ณด๋„ˆ์Šค ๋ณผ ์ผ์น˜"; + } + return matchNumberCount + "๊ฐœ ์ผ์น˜"; + } } diff --git a/src/main/java/lotto/view/OutputView.java b/src/main/java/lotto/view/OutputView.java index 1a67dec93e..a9b2215264 100644 --- a/src/main/java/lotto/view/OutputView.java +++ b/src/main/java/lotto/view/OutputView.java @@ -3,6 +3,8 @@ import lotto.domain.Lotto; import lotto.global.LottoPrize; +import java.util.Arrays; +import java.util.Comparator; import java.util.List; public class OutputView { @@ -13,11 +15,14 @@ public static void printLottos(List lottos) { } public static void printResult(List results) { - for (LottoPrize prize : LottoPrize.values()) { - if (prize == LottoPrize.NONE) continue; - long count = results.stream().filter(prize::equals).count(); - System.out.println(prize.getMatchNumberCount() + "๊ฐœ ์ผ์น˜ " + "(" + prize.getPrizeMoney() + "์›) - " + count + "๊ฐœ"); - } + System.out.println("๋‹น์ฒจ ํ†ต๊ณ„"); + System.out.println("---"); + Arrays.stream(LottoPrize.values()) + .filter(prize -> prize != LottoPrize.NONE) + .forEach(prize -> { + long count = results.stream().filter(prize::equals).count(); + System.out.println(prize.getMatchDescription() + " (" + prize.getPrizeMoney() + "์›) - " + count + "๊ฐœ"); + }); } public static void printProfit(double profit) { From 104ade14526cc7dcb1cbf1de3ffff215c3d0ecdc Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:31:09 +0900 Subject: [PATCH 33/42] =?UTF-8?q?feat:=20run=20=ED=98=B8=EC=B6=9C=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/Application.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/Application.java index 0020e03240..6242293005 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/Application.java @@ -1,7 +1,9 @@ package lotto; +import lotto.runner.Runner; + public class Application { public static void main(String[] args) { - + Runner.run(); } } From e2c4c99e61ab4b6aa83261e75a9bf38a7ebb39e7 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:31:20 +0900 Subject: [PATCH 34/42] =?UTF-8?q?feat:=20runner=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/runner/Runner.java | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/lotto/runner/Runner.java diff --git a/src/main/java/lotto/runner/Runner.java b/src/main/java/lotto/runner/Runner.java new file mode 100644 index 0000000000..c9e965b12c --- /dev/null +++ b/src/main/java/lotto/runner/Runner.java @@ -0,0 +1,38 @@ +package lotto.runner; + +import lotto.application.LottoGenerator; +import lotto.application.LottoService; +import lotto.domain.Lotto; +import lotto.global.LottoPrize; +import lotto.parser.InputParser; +import lotto.view.InputView; +import lotto.view.OutputView; + +import java.util.List; +import java.util.stream.Collectors; + +public class Runner { + + public static void run() { + LottoGenerator lottoGenerator = LottoGenerator.getInstance(); + LottoService lottoService = LottoService.getInstance(lottoGenerator); + + int lottoPrice = InputParser.parseLottoPrice(InputView.inputLottoPurchase()); + List purchasedLottos = lottoService.buyLottos(lottoPrice); + OutputView.printLottos(purchasedLottos); + + List winningLottoNumbers = InputParser.parseLottoNumber(InputView.inputLottoNumber()); + Lotto winningLotto = Lotto.of(winningLottoNumbers); + + int bonusNumber = InputParser.parseBonusNumber(InputView.inputBonusNumber()); + + List results = purchasedLottos.stream() + .map(lotto -> lottoService.calculatePrize(lotto, winningLotto, bonusNumber)) + .collect(Collectors.toList()); + + OutputView.printResult(results); + + double profitRate = lottoService.calculateProfitRate(results, lottoPrice); + OutputView.printProfit(profitRate); + } +} From c252b03a673ae9ef4c409d0ad0c8c369e5b58fc4 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:35:06 +0900 Subject: [PATCH 35/42] =?UTF-8?q?feat:=20runner=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/runner/Runner.java | 28 +++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/lotto/runner/Runner.java b/src/main/java/lotto/runner/Runner.java index c9e965b12c..60221baec4 100644 --- a/src/main/java/lotto/runner/Runner.java +++ b/src/main/java/lotto/runner/Runner.java @@ -18,21 +18,39 @@ public static void run() { LottoService lottoService = LottoService.getInstance(lottoGenerator); int lottoPrice = InputParser.parseLottoPrice(InputView.inputLottoPurchase()); + List purchasedLottos = getLottos(lottoService, lottoPrice); + + Lotto winningLotto = getWinningLotto(); + + int bonusNumber = InputParser.parseBonusNumber(InputView.inputBonusNumber()); + + List results = getLottoPrizes(purchasedLottos, lottoService, winningLotto, bonusNumber); + + getProfit(lottoService, results, lottoPrice); + } + + private static List getLottos(LottoService lottoService, int lottoPrice) { List purchasedLottos = lottoService.buyLottos(lottoPrice); OutputView.printLottos(purchasedLottos); + return purchasedLottos; + } + private static Lotto getWinningLotto() { List winningLottoNumbers = InputParser.parseLottoNumber(InputView.inputLottoNumber()); - Lotto winningLotto = Lotto.of(winningLottoNumbers); + return Lotto.of(winningLottoNumbers); + } - int bonusNumber = InputParser.parseBonusNumber(InputView.inputBonusNumber()); + private static void getProfit(LottoService lottoService, List results, int lottoPrice) { + double profitRate = lottoService.calculateProfitRate(results, lottoPrice); + OutputView.printProfit(profitRate); + } + private static List getLottoPrizes(List purchasedLottos, LottoService lottoService, Lotto winningLotto, int bonusNumber) { List results = purchasedLottos.stream() .map(lotto -> lottoService.calculatePrize(lotto, winningLotto, bonusNumber)) .collect(Collectors.toList()); OutputView.printResult(results); - - double profitRate = lottoService.calculateProfitRate(results, lottoPrice); - OutputView.printProfit(profitRate); + return results; } } From a838b3315c8d7a92a8bae39c2444b4b3a6fa7c0e Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:38:15 +0900 Subject: [PATCH 36/42] =?UTF-8?q?feat:=20=EB=A1=9C=EB=98=90=20=EC=B2=9C=20?= =?UTF-8?q?=EC=9B=90=20=EB=8B=A8=EC=9C=84=20=EA=B8=88=EC=95=A1=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- src/main/java/lotto/application/LottoService.java | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 07dbcd906e..6415796f0a 100644 --- a/README.md +++ b/README.md @@ -72,9 +72,9 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ ## ๐ŸŒˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ชฉ๋ก -- [ ] **๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก ์ž…๋ ฅ ๋ฐ›๊ธฐ** - - [ ] 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅ๋œ ๊ธˆ์•ก์ธ์ง€ ํ™•์ธ - - [ ] ์ž…๋ ฅ ๊ธˆ์•ก์ด 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ +- [x] **๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก ์ž…๋ ฅ ๋ฐ›๊ธฐ** + - [x] 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅ๋œ ๊ธˆ์•ก์ธ์ง€ ํ™•์ธ + - [x] ์ž…๋ ฅ ๊ธˆ์•ก์ด 1,000์›์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ - [x] **๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ ๋ฐ ๋ฐœํ–‰** - [x] ์ž…๋ ฅ๋œ ๊ธˆ์•ก์— ๋”ฐ๋ผ ๋ฐœํ–‰ํ•  ๋กœ๋˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ diff --git a/src/main/java/lotto/application/LottoService.java b/src/main/java/lotto/application/LottoService.java index 97eb67d5f1..fcd99573b3 100644 --- a/src/main/java/lotto/application/LottoService.java +++ b/src/main/java/lotto/application/LottoService.java @@ -24,6 +24,7 @@ public static LottoService getInstance(LottoGenerator lottoGenerator) { } public List buyLottos(int price) { + validatePrice(price); List lottos = new ArrayList<>(); for(int i = 0; i < price / LOTTO_PRICE; i++) { @@ -50,4 +51,10 @@ public Double calculateProfitRate(List results, int purchaseQuantity .sum(); return (double) totalPrize / purchaseQuantity; } + + private void validatePrice(int price) { + if (price <= 0 || price % LOTTO_PRICE != 0) { + throw new IllegalArgumentException("[ERROR] ๊ธˆ์•ก์€ 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."); + } + } } From d5b2a94212e102e7fa7e046e313e9fd2cd7d21a2 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:42:26 +0900 Subject: [PATCH 37/42] =?UTF-8?q?refactor:=20=EB=A1=9C=EB=98=90=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lotto/application/LottoValidator.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/lotto/application/LottoValidator.java diff --git a/src/main/java/lotto/application/LottoValidator.java b/src/main/java/lotto/application/LottoValidator.java new file mode 100644 index 0000000000..0c16af4152 --- /dev/null +++ b/src/main/java/lotto/application/LottoValidator.java @@ -0,0 +1,27 @@ +package lotto.application; + +import java.util.List; + +public class LottoValidator { + + private static final int LOTTO_PRICE = 1000; + private static final int MIN_NUMBER = 1; + private static final int MAX_NUMBER = 45; + + + public static void validatePurchasePrice(int price) { + if (price <= 0 || price % LOTTO_PRICE != 0) { + throw new IllegalArgumentException("[ERROR] ๊ธˆ์•ก์€ 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."); + } + } + + public static void validateBonusNumber(int bonusNumber, List winningNumbers) { + if (bonusNumber < MIN_NUMBER || bonusNumber > MAX_NUMBER) { + throw new IllegalArgumentException("[ERROR] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ˆซ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); + } + + if (winningNumbers.contains(bonusNumber)) { + throw new IllegalArgumentException("[ERROR] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋Š” ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."); + } + } +} From a6e8855b4eed2b18c72370eae0012e0e8813d0a2 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:42:39 +0900 Subject: [PATCH 38/42] =?UTF-8?q?refactor:=20=EB=B3=B4=EB=84=88=EC=8A=A4?= =?UTF-8?q?=20=EB=B2=88=ED=98=B8=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/application/LottoService.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/lotto/application/LottoService.java b/src/main/java/lotto/application/LottoService.java index fcd99573b3..688e0b8970 100644 --- a/src/main/java/lotto/application/LottoService.java +++ b/src/main/java/lotto/application/LottoService.java @@ -24,7 +24,7 @@ public static LottoService getInstance(LottoGenerator lottoGenerator) { } public List buyLottos(int price) { - validatePrice(price); + LottoValidator.validatePurchasePrice(price); List lottos = new ArrayList<>(); for(int i = 0; i < price / LOTTO_PRICE; i++) { @@ -34,9 +34,10 @@ public List buyLottos(int price) { return lottos; } - public LottoPrize calculatePrize(Lotto myLotto, Lotto LottoResult, int bonusNumber) { + public LottoPrize calculatePrize(Lotto myLotto, Lotto lottoResult, int bonusNumber) { + LottoValidator.validateBonusNumber(bonusNumber, lottoResult.getNumbers()); long matchLottoCount = myLotto.getNumbers().stream() - .filter(LottoResult.getNumbers()::contains) + .filter(lottoResult.getNumbers()::contains) .count(); boolean matchBonusNumber = myLotto.getNumbers().contains(bonusNumber); @@ -51,10 +52,4 @@ public Double calculateProfitRate(List results, int purchaseQuantity .sum(); return (double) totalPrize / purchaseQuantity; } - - private void validatePrice(int price) { - if (price <= 0 || price % LOTTO_PRICE != 0) { - throw new IllegalArgumentException("[ERROR] ๊ธˆ์•ก์€ 1,000์› ๋‹จ์œ„๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."); - } - } } From 16458f112f0805164ea235865376b9a0daee051d Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:43:02 +0900 Subject: [PATCH 39/42] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6415796f0a..7cfb681b4c 100644 --- a/README.md +++ b/README.md @@ -82,12 +82,12 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [x] ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ - [x] ๋ฐœํ–‰๋œ ๋กœ๋˜ ์ˆ˜๋Ÿ‰๊ณผ ๊ฐ๊ฐ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ -- [ ] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** +- [x] **๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ฐ›๊ธฐ** - [x] ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ - [x] ์ž…๋ ฅ๋œ ๋ฒˆํ˜ธ๋“ค์ด 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - - [ ] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ - - [ ] ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ - - [ ] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ + - [x] ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1~45 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆซ์ž์ธ์ง€ ๊ฒ€์ฆ + - [x] ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ + - [x] ์ž…๋ ฅ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ - [x] **๋กœ๋˜ ๋‹น์ฒจ ํ™•์ธ** - [x] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๊ฐ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต From 329c285401a90b323c1596c567f674f8b56c3cd1 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:50:55 +0900 Subject: [PATCH 40/42] =?UTF-8?q?fix:=20runner=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- src/main/java/lotto/runner/Runner.java | 12 ++++-------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 7cfb681b4c..13907455d5 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,6 @@ Exception์ด ์•„๋‹Œ `IllegalArgumentException`, `IllegalStateException` ๋“ฑ๊ณผ - [x] ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ์ด ๊ธˆ์•ก๊ณผ ๋‹น์ฒจ ๊ธˆ์•ก์„ ๋น„๊ตํ•˜์—ฌ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ - [x] ์ˆ˜์ต๋ฅ ์„ ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅ -- [ ] **์˜ˆ์™ธ ์ฒ˜๋ฆฌ** - - [ ] ์ž…๋ ฅ ๊ฐ’์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ `IllegalArgumentException`์„ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ - - [ ] ์ž˜๋ชป๋œ ๊ฐ’์ด ์ž…๋ ฅ๋  ๊ฒฝ์šฐ ํ•ด๋‹น ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋‹ค์‹œ ๋ฐ›๋„๋ก ๊ตฌํ˜„ \ No newline at end of file +- [x] **์˜ˆ์™ธ ์ฒ˜๋ฆฌ** + - [x] ์ž…๋ ฅ ๊ฐ’์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ `IllegalArgumentException`์„ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  `[ERROR]` ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ + - [x] ์ž˜๋ชป๋œ ๊ฐ’์ด ์ž…๋ ฅ๋  ๊ฒฝ์šฐ ํ•ด๋‹น ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋‹ค์‹œ ๋ฐ›๋„๋ก ๊ตฌํ˜„ \ No newline at end of file diff --git a/src/main/java/lotto/runner/Runner.java b/src/main/java/lotto/runner/Runner.java index 60221baec4..2739adcd6e 100644 --- a/src/main/java/lotto/runner/Runner.java +++ b/src/main/java/lotto/runner/Runner.java @@ -20,13 +20,14 @@ public static void run() { int lottoPrice = InputParser.parseLottoPrice(InputView.inputLottoPurchase()); List purchasedLottos = getLottos(lottoService, lottoPrice); - Lotto winningLotto = getWinningLotto(); + List winningLottoNumbers = InputParser.parseLottoNumber(InputView.inputLottoNumber()); + Lotto winningLotto = Lotto.of(winningLottoNumbers); int bonusNumber = InputParser.parseBonusNumber(InputView.inputBonusNumber()); List results = getLottoPrizes(purchasedLottos, lottoService, winningLotto, bonusNumber); - getProfit(lottoService, results, lottoPrice); + getProfitRate(lottoService, results, lottoPrice); } private static List getLottos(LottoService lottoService, int lottoPrice) { @@ -35,12 +36,7 @@ private static List getLottos(LottoService lottoService, int lottoPrice) return purchasedLottos; } - private static Lotto getWinningLotto() { - List winningLottoNumbers = InputParser.parseLottoNumber(InputView.inputLottoNumber()); - return Lotto.of(winningLottoNumbers); - } - - private static void getProfit(LottoService lottoService, List results, int lottoPrice) { + private static void getProfitRate(LottoService lottoService, List results, int lottoPrice) { double profitRate = lottoService.calculateProfitRate(results, lottoPrice); OutputView.printProfit(profitRate); } From 882fd430b08569936bc0ddcf99754a63d6d36291 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:52:36 +0900 Subject: [PATCH 41/42] =?UTF-8?q?feat:=20=EB=A1=9C=EB=98=90=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=A4=91=EB=B3=B5=20=EA=B2=80=EC=82=AC=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/domain/Lotto.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/lotto/domain/Lotto.java b/src/main/java/lotto/domain/Lotto.java index f5534ade91..4a25c037b1 100644 --- a/src/main/java/lotto/domain/Lotto.java +++ b/src/main/java/lotto/domain/Lotto.java @@ -1,7 +1,9 @@ package lotto.domain; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class Lotto { private final List numbers; @@ -9,6 +11,7 @@ public class Lotto { public Lotto(List numbers) { validateQuantity(numbers); validateNumberRange(numbers); + validateDuplicate(numbers); this.numbers = numbers; sortNumbers(this.numbers); } @@ -38,4 +41,11 @@ private void validateNumberRange(List numbers) { private void sortNumbers(List numbers) { Collections.sort(numbers); } + + private void validateDuplicate(List numbers) { + Set uniqueNumbers = new HashSet<>(numbers); + if (uniqueNumbers.size() != numbers.size()) { + throw new IllegalArgumentException("[ERROR] ๋กœ๋˜ ๋ฒˆํ˜ธ์— ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค."); + } + } } From 4d703e74a67ab376caccd6d50f47ea1044709c81 Mon Sep 17 00:00:00 2001 From: SongJaeHoonn Date: Mon, 4 Nov 2024 23:56:19 +0900 Subject: [PATCH 42/42] =?UTF-8?q?feat:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/lotto/LottoTest.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/test/java/lotto/LottoTest.java b/src/test/java/lotto/LottoTest.java index c74fb4b676..1d0756794f 100644 --- a/src/test/java/lotto/LottoTest.java +++ b/src/test/java/lotto/LottoTest.java @@ -1,11 +1,15 @@ package lotto; +import lotto.application.LottoService; import lotto.domain.Lotto; +import lotto.global.LottoPrize; +import lotto.parser.InputParser; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; class LottoTest { @@ -15,12 +19,16 @@ class LottoTest { .isInstanceOf(IllegalArgumentException.class); } - @DisplayName("๋กœ๋˜ ๋ฒˆํ˜ธ์— ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ์žˆ์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test void ๋กœ๋˜_๋ฒˆํ˜ธ์—_์ค‘๋ณต๋œ_์ˆซ์ž๊ฐ€_์žˆ์œผ๋ฉด_์˜ˆ์™ธ๊ฐ€_๋ฐœ์ƒํ•œ๋‹ค() { assertThatThrownBy(() -> new Lotto(List.of(1, 2, 3, 4, 5, 5))) .isInstanceOf(IllegalArgumentException.class); } - // TODO: ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ + @Test + void ๋กœ๋˜_๋ฒˆํ˜ธ๊ฐ€_6๊ฐœ๊ฐ€_์•„๋‹ˆ๋ฉด_์˜ˆ์™ธ๊ฐ€_๋ฐœ์ƒํ•œ๋‹ค() { + assertThatThrownBy(() -> new Lotto(List.of(1, 2, 3, 4, 5))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 6๊ฐœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."); + } }