์ด๋ฒ์๋ 3์ฃผ์ฐจ ๋ฏธ์
์ด ์์๋์์ต๋๋ค.
3์ฃผ์ฐจ๋ ์ญ์ ์์ 1์๊ฐ ์ ์, ์ฝ์ํ๊ฐ ์ด๋ ธ๋๋ฐ...์ ๋ ์ผ๊ฒฝํ ๊ต์ก ๋ฃ๋๋ผ ์ค์๊ฐ์ ๋ชป๋ดค์ต๋๋ค๐
ํ์ง๋ง ๊ทธ๋๋ ๋ค์๋ณด๊ธฐ๋ณด๋ฉด์ ๊ฐ๋จํ ์ ๋ฆฌํด๋์ผ๋ ๊ถ๊ธํ์ ๋ถ๋ค์ ์๋ ๋งํฌ์์ ๋ด์ฃผ์ธ์!
๐ ์ฐ์ํํ ํฌ์ฝ์ค 6๊ธฐ ํ๋ฆฌ์ฝ์ค 3์ฃผ์ฐจ ์ฝ์ํ ๋ด์ฉ ์ ๋ฆฌ
์ด๋ฒ ๋ฏธ์
์ ๋ก๋ ๊ฒ์์ ๋ง๋๋ ๊ฒ์ด์๊ณ , ์๊ตฌ์ฌํญ์ ์ญ์๋ 4๊ฐ์ง๋ก ๋๋์ด์ ธ ์์์ต๋๋ค.
๐ก ๊ธฐ๋ฅ์๊ตฌ์ฌํญ
๐ก ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ ์ฌํญ
๐ก ๊ณผ์ ์งํ ์๊ตฌ์ฌํญ
๐ก ์ถ๊ฐ๋ ์๊ตฌ์ฌํญ
์์ธํ ์ฌํญ์ hayannn/java-lotto-6: ์ฐ์ํํ ํฌ์ฝ์ค ํ๋ฆฌ์ฝ์ค 3์ฃผ์ฐจ ๋ฏธ์ - ๋ก๋์์ ํ์ธํด์ฃผ์ธ์!!
์ด๋ฒ ๋ฏธ์
์์๋ ์ญ์ 2์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ๊ณผ 3์ฃผ์ฐจ ๋ฏธ์
์ ์์ฌํญ์ด ์ ๋ฆฌ๋ ์ด๋ฉ์ผ์ ๋ฐ์๋ณผ ์ ์์์ด์!
์ด๋ฒ ๋ฏธ์ ์์๋ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ, ํด๋์ค๋ฅผ ๋ถ๋ฆฌํ๋ ์ฐ์ต์ด ํ์ํ์ต๋๋ค.
๊ฐ์ฅ ๋จผ์ ๊ตฌํํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฆฌํ์ต๋๋ค.
๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ docs/README.md์ ๊ตฌํํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฆฌํด ์ถ๊ฐํ๋ค.
Git์ ์ปค๋ฐ ๋จ์๋ ์ ๋จ๊ณ์์ docs/README.md์ ์ ๋ฆฌํ ๊ธฐ๋ฅ ๋ชฉ๋ก ๋จ์๋ก ์ถ๊ฐํ๋ค.
๋ผ๋ ์กฐ๊ฑด์ ๋ง์ถฐ์์!
์ด๋ฒ์๋ ์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์
์ ํตํด ์ด๋ฒ ๋ฏธ์
์์ ์ ๊ฐ ์ต์ํ์ผ๋ก ์งํฌ Git Commit CheckList๋ฅผ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ํ๋จ์ ์์ฑํ์ต๋๋ค.
์ด๋ฒ์๋
๐น ๋ก๋ ๊ฒ์ ์ ์ ๋ฐ ๊ท์น
๐น ๊ธฐ๋ฅ ๋ชฉ๋ก
๐น ํจํค์ง ๊ตฌ์กฐ
๐น ๊ถ๊ธํ์ด์
๐น ๋ฐฐ์ ์ด์
๐น ์ฐธ๊ณ ) ๊น ์ปค๋ฐ ์ฒดํฌ๋ฆฌ์คํธ
๋ก ๋๋์ด ๋ดค์ต๋๋ค!!
์ด๋ฒ ๋ก๋ ๊ฒ์์์๋ role์ด ์ถ๊ฐ๋ ๋๋์ ๋ฐ์์ด์.
๋จ์ํ ํ๋ ์ด์ด์ ์ปดํจํฐ๊ฐ ์๋, ์ถ์ฒจ์ ํ๋ ์ด๋ ํ ์ฃผ์ฒด(?)๊ฐ ํฌํจ๋์๋ค๊ณ ํ๋จํ์ต๋๋ค.
๊ทธ๋ ์ง ์๋ค๋ฉด, ๋ก๋ ๊ฒ์์ ์์ํ๊ณ ํ๋ ์ด์ด๊ฐ ๋ก๋๋ฅผ ๊ตฌ์
ํ๊ณ ๋น์ฒจ๋ฒํธ๋ ๋ฝ๋ ๋ถ์์ฌ...๐ฎ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๐คฏ ๋๋ฒ์งธ ๊ณ ๋ฏผ, ๋น์ฒจ๋ฒํธ๋ฅผ ๋ฝ๋ ์ฌ๋๋ ํ๋ ์ด์ด...?
์ด๋ ๊ฒ ์์ฑํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์์.
๊ฒ์์์์ ์ญํ ์ ํ๋ ์ด์ด, ์ถ์ฒจ์, ์ปดํจํฐ์ 3๊ฐ์ง๋ก ๊ตฌ๋ถ
1๏ธโฃ ๋ก๋ ๊ฒ์์ ์์ํ๊ณ , ๊ตฌ์ ๊ธ์ก์ ์ ๋ ฅ๋ฐ๊ธฐ ์ํ ๋ฌธ๊ตฌ ์ถ๋ ฅ
๊ตฌ์
๊ธ์ก์ ์
๋ ฅํด ์ฃผ์ธ์.
2๏ธโฃ ํ๋ ์ด์ด
๊ตฌ์ ๊ธ์ก ์ ๋ ฅ
[ERROR] ๊ตฌ์
๊ธ์ก์ 1,000์ ๋จ์๋ก ์
๋ ฅํด์ฃผ์ธ์.
[ERROR] ๊ตฌ์
๊ธ์ก์ 1,000์ ๋จ์์ ์ซ์๋ก ์
๋ ฅํด์ผ ํฉ๋๋ค.
[ERROR] ๊ตฌ์
๊ธ์ก์ ์
๋ ฅํด์ฃผ์ธ์.
3๏ธโฃ ์ปดํจํฐ
4๏ธโฃ ๊ตฌ๋งค ๊ฐ์ ๋ฐ ๋ฐํํ ๋ฒํธ ์ถ๋ ฅ
์์
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]
5๏ธโฃ ์ถ์ฒจ์์๊ฒ ๋น์ฒจ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๊ธฐ ์ํ ๋ฌธ๊ตฌ ์ถ๋ ฅ
๋น์ฒจ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.
6๏ธโฃ ์ถ์ฒจ์
๋น์ฒจ๋ฒํธ ์ ๋ ฅ : ๋ฒํธ๋ ์ผํ(,)๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ
[ERROR] ๋ก๋ ๋ฒํธ๋ 6๊ฐ๋ฅผ ์
๋ ฅํด์ผ ํฉ๋๋ค.
[ERROR] ๋ก๋ ๋ฒํธ๋ 1๋ถํฐ 45 ์ฌ์ด์ ์ซ์์ฌ์ผ ํฉ๋๋ค.
[ERROR] ๋ก๋ ๋ฒํธ๋ ์ซ์์ ์ฝค๋ง(,)๋ก ๊ตฌ์ฑํด์ฃผ์ธ์.
[ERROR] ๋ก๋ ๋ฒํธ๋ ์ค๋ณต๋์ง ์๋ ์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.
[ERROR] ๋ก๋ ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.
7๏ธโฃ ์ถ์ฒจ์์๊ฒ ๋ณด๋์ค ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๊ธฐ ์ํ ๋ฌธ๊ตฌ ์ถ๋ ฅ
๋ณด๋์ค ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.
8๏ธโฃ ์ถ์ฒจ์
๋ณด๋์ค ๋ฒํธ ์ ๋ ฅ
[ERROR] ๋ณด๋์ค ๋ฒํธ๋ ์ซ์์ ์ฝค๋ง(,)๋ก ๊ตฌ์ฑํด์ผ ํ๋ฉฐ 1๊ฐ์ฌ์ผ ํฉ๋๋ค.
[ERROR] ๋ณด๋์ค ๋ฒํธ๋ 1๋ถํฐ 45 ์ฌ์ด์ ์ซ์์ฌ์ผ ํฉ๋๋ค.
[ERROR] ๋ณด๋์ค ๋ฒํธ๋ ์ซ์์ ์ฝค๋ง(,)๋ก ๊ตฌ์ฑํด์ผ ํ๋ฉฐ 1๊ฐ์ฌ์ผ ํฉ๋๋ค.
[ERROR] ๋ณด๋์ค ๋ฒํธ๋ ์ค๋ณต๋์ง ์๋ ์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.
[ERROR] ๋ณด๋์ค ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.
9๏ธโฃ ์ปดํจํฐ
๐ ๋น์ฒจ ๋ด์ญ ๋ฐ ์์ต๋ฅ ์ถ๋ ฅ
๋น์ฒจ ํต๊ณ
---
3๊ฐ ์ผ์น (5,000์) - 1๊ฐ
4๊ฐ ์ผ์น (50,000์) - 0๊ฐ
5๊ฐ ์ผ์น (1,500,000์) - 0๊ฐ
5๊ฐ ์ผ์น, ๋ณด๋์ค ๋ณผ ์ผ์น (30,000,000์) - 0๊ฐ
6๊ฐ ์ผ์น (2,000,000,000์) - 0๊ฐ
์ด ์์ต๋ฅ ์ 62.5%์
๋๋ค.
์ด ๊ธฐ๋ฅ๋ชฉ๋ก ์ญ์, ์์ ๊ณ ๋ฏผํ๋ role์ ๋ํ ๋ฌธ์ ๋ก ์ธํด ์ด์ ์๋ ํ๋ ์ด์ด์ ์ปดํจํฐ์ 2๊ฐ์ง ์ ์ฅ์์๋ง ๊ธฐ์ ํ์ง๋ง ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ํ๋ ์ด์ด, ์ถ์ฒจ์, ์ปดํจํฐ์ 3๊ฐ์ง role๋ก ์ฌ์ง์ ํ์ฌ ์์ฑํ ๋ฒ์ ์ ๋๋ค!
๊ทธ ๋ค์ ํจํค์ง๋ณ๋ก ์ญํ ์ ๋๋์ด ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ์ต๋๋ค.
์ด๋ฒ์๋ ์ญ์ MVC ํจํด์ ์ ์ฉํ์ด์.
...
โโโ docs
| โโโ README.md
โโโ src
โโโ main/java/lotto
โโโ Controller
| โโโ LottogameController.java
|
โโโ Domain
| โโโ Lotto.java
| โโโ PlayerNumber.java
| โโโ PlayerPrice.java
|
โโโ Enum
| โโโ LottoRankingInfo.java
|
โโโ Exception
| โโโ PlayerBuyingPayException.java
| โโโ LottoNumberException.java
| โโโ BonusNumberException.java
|
โโโ Service
| โโโ PlayerInputManagerService.java
| โโโ LotteryDrawerInputManagerService.java
| โโโ WinningNumberComparatorService.java
|
โโโ Util
| โโโ LottoNumberGenerator.java
| โโโ InputNumberParser.java
|
โโโ View
| โโโ InputView.java
| โโโ OutputView.java
|
โโโ Application.java
๋ํ, ์ด์ ๋ฏธ์ ๊ณผ ๋์ผํ๊ฒ ์ด ๋ถ๋ถ๋ ์์ฑํ์ต๋๋ค.
๊ฐ๋ฐ์ ์งํํ๋ฉด ์์๋ ์ผ๋ค์ ์ผ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์์!
๋ด์ฉ์ด ๋๋ฌด ๊ธธ์ด์ง ๊ฒ ๊ฐ์ ์๋ตํ๋๋ก ํ๊ฒ ์ต๋๋ค๐ฅฒ
๐ Week3: ๋ก๋
์ด๋ฒ ๋ฏธ์
์์๋ "๋๋ฉ์ธ ๋ก์ง์ ๋จ์ ํ
์คํธ๋ฅผ ๊ตฌํํด์ผ ํ๋ค"๋ผ๋ ์กฐ๊ฑด๋ ํฌํจ๋์ด ์์์ต๋๋ค.
์ ๋ ๊ทธ ์ค์์๋ ๋๋ฉ์ธ ๋ก์ง์ ๋ฒ์ฃผ๊ฐ ๊ฐ์ฅ ๊ถ๊ธํ๋๋ฐ์!
๊ณ ๋ฏผ ๋์,
Java์ Enum์ ๋ฌด์์ผ๊น์?
์ฐ์ Java Enum ํ์ฉ๊ธฐ๋ฅผ ์ฝ์ด๋ณด๊ณ ์ค์๋ฉด ๋ง์ด ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
Enum์ ๋ค์ํ ์ผ์ด์ค์ ์์๋ฅผ ๊ฐ์ฒดํํด ๊ด๋ฆฌํฉ๋๋ค.
์ฆ, ์ด๊ฑฐํ ์์๋ผ๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋ ๊ฒ์ด์ฃ .
๋จ์ ์ด๊ฑฐํ ์์์ ๊ฒฝ์ฐ, Enum ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ ํด๋์ค๋ฅผ ๋ถ๋ฆฌํด ๊ฐ์ฒด๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค!!
์ด๋ฌํ ๊ธฐ์ด ์ง์์ ์์ ๋ค ์ด๋ฒ ๋ฏธ์
์์ Enum์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๋ฅผ ๋ถ์ํด๋ดค์ต๋๋ค.
๋ก๋ ๊ฒ์์ด ๋ชจ๋ ์งํ๋๊ณ ๋๋ฉด, ๋ง๋ฌด๋ฆฌ ๋จ๊ณ์์ ๋น์ฒจ ํต๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ์.
์ด ๋น์ฒจ ํต๊ณ๋ฅผ 6๊ฐ ์ผ์น, 5๊ฐ ์ผ์น, 4๊ฐ ์ผ์น,...์์ ๊ณ์์ ์ผ๋ก ํด๋์ค๋ฅผ ์ ์ธํ์ฌ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด....!
์ฌ์ง์ด ๋ณด๋์ค ๋ฒํธ๋ฅผ ํฌํจํด์ 5๊ฐ๊ฐ ์ผ์น๋๋ ํน์ํ ๊ฒฝ์ฐ๋ ์์ผ๋..
์๊ฐ๋ง ํด๋ ๋๋ฌด ์๋ํด์ง์ฃ ๐ตโ๐ซ
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๋น์ฒจ ํต๊ณ์ ๋ํ ๋ญํน ์ ๋ณด๋ Enum์ ํตํด ๋ณ๋ ๊ด๋ฆฌํ๊ณ , ๊ฐ๋จํ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ผ ๊ฒ๋๋ค!!
๐ LottoRankingInfo.java
package lotto.Enum;
import java.util.Arrays;
public enum LottoRankingInfo {
SIX_MATCH(6, 2000000000),
FIVE_AND_BONUS(7, 30000000),
FIVE_MATCH(5, 1500000),
FOUR_MATCH(4, 50000),
THREE_MATCH(3, 5000),
ONE_MATCH(1, 0);
private final int countWinngNumbers;
private final int rankWinningPrize;
LottoRankingInfo(int countWinngNumbers, int rankWinningPrize) {
this.countWinngNumbers = countWinngNumbers;
this.rankWinningPrize = rankWinningPrize;
}
public int getRankWinningPrize() {
return rankWinningPrize;
}
public static LottoRankingInfo valueOf(int countWinningNumbers) {
return Arrays.stream(LottoRankingInfo.values())
.filter(info -> info.countWinngNumbers == countWinningNumbers)
.findFirst()
.orElse(null);
}
}
ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ค์ ํ์คํ๊ฒ ์ ํ๊ธฐ!
๐ฌย ๊น๋ค๋ก์์ง๋ ์๊ตฌ์ฌํญ์ ์ต๋ํ ๋ง์ถ ์ ์๋๋ก, ์ฐ์ ์์ ๋ฐ ์ฒดํฌ๋ฆฌ์คํธ ์ ํ๊ธฐ!
์ด๋ฒ์ฃผ๋ ํ๋ค๊ณ , ํน์๋ ๋ชปํ๋ฉด ์ด์ฉ์งํ๋ฉด์ ์ฌํผํ์ง๋ง....!
๊ฒฐ๊ตญ ํด๋์ต๋๋ค!!
๊ทธ๋ผ ์ ๋ ์ด๋ง ๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
์ํ๋ก๊ทธ
๊ฐ๋ฐ ๊ณผ์ ์ ๋ ์ธ์ธํ๊ณ ์ฌ๋ฏธ์๋ ์ผ๋ค์ด ๊ถ๊ธํ์๋ค๋ฉด ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
์ฌ์ฉ ๋๊ณ ๊ฐ๋๋ค๐ฝ
๐ Week3: ๋ก๋
์ด๋ฒ ๋ฏธ์ ์ ์ ๋ชจ์ต์ด์์ต๋๋ค๐คฃ