3๏ธโฃย ํ๋ฆฌ์ฝ์ค 3์ฃผ์ฐจ ๋ฏธ์
- ๋ก๋
๋ก๋ ๋น์ฒจ ๊ฒฐ๊ณผ ๋ฐ ์์ต๋ฅ ์ ์๋ ค์ฃผ๋ ๊ฒ์
๐ฎย ๊ฒ์ ๊ณผ์
1. ๊ตฌ์
๊ธ์ก ์
๋ ฅ
์๋ ๋ฌธ์ฅ์ด ์ถ๋ ฅ๋๋ฉด, ๊ตฌ์
๊ธ์ก์ 1000์ ๋จ์๋ก ์
๋ ฅํ๋ค.
๊ตฌ์
๊ธ์ก์ ์
๋ ฅํด ์ฃผ์ธ์.
2. ๋ก๋ ๋ฐํ
์๋์ฒ๋ผ ๊ตฌ๋งค ์๋์ ์ถ๋ ฅํ๊ณ , ๊ตฌ๋งค ์๋๋งํผ ๋ก๋๋ฅผ ์์๋๋ก ๋ฐํํ๋ค.
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. ๋น์ฒจ ๋ฒํธ ์
๋ ฅ
์๋ ๋ฌธ์ฅ์ด ์ถ๋ ฅ๋๋ฉด, ๋น์ฒจ ๋ฒํธ๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํด ์
๋ ฅํ๋ค.
๋น์ฒจ ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.
4. ๋ณด๋์ค ๋ฒํธ ์
๋ ฅ
์๋ ๋ฌธ์ฅ์ด ์ถ๋ ฅ๋๋ฉด, ๋ณด๋์ค ๋ฒํธ๋ฅผ 1๊ฐ ์
๋ ฅํ๋ค.
๋ณด๋์ค ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.
5. ๋น์ฒจ ํต๊ณ ์ถ๋ ฅ
๋ฐํํ ๋ก๋ ๋ฒํธ์ ๋น์ฒจ ๋ฒํธ, ๋ณด๋์ค ๋ฒํธ๋ฅผ ๋น๊ตํ์ฌ ๋น์ฒจ ๊ฐ์์ ์ด ์์ต๋ฅ ์ ์ถ๋ ฅํ๋ค.
๋น์ฒจ ํต๊ณ
---
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%์
๋๋ค.
๐ย ์คํ ๊ฒฐ๊ณผ
๊ตฌ์
๊ธ์ก์ ์
๋ ฅํด ์ฃผ์ธ์.
8000
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]
๋น์ฒจ ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.
1,2,3,4,5,6
๋ณด๋์ค ๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.
7
๋น์ฒจ ํต๊ณ
---
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%์
๋๋ค.
๐ย ๊ธฐ๋ฅ ๋ชฉ๋ก
1. ๊ตฌ์
๊ธ์ก ์
๋ ฅ๋ฐ๊ธฐ
- ์ฌ์ฉ์๋ก๋ถํฐ ๊ตฌ์
๊ธ์ก์ ์
๋ ฅ๋ฐ๋๋ค.
- ์์ธ์ฒ๋ฆฌ :
- ์
๋ ฅ๊ฐ์ ์ซ์์ฌ์ผ ํ๋ค.
- ์
๋ ฅ๊ฐ์ด 0์ด ๋๋ฉด ์๋๋ค.
- ์
๋ ฅ๊ฐ์ 1000์ผ๋ก ๋๋์ด ๋จ์ด์ ธ์ผ ํ๋ค.
- ๊ตฌ๋งค ์๋์ ๊ตฌํ๋ค.
๊ตฌ๋งค ์๋ = ๊ตฌ์
๊ธ์ก / 1000
2. ๋ก๋ ๋ฐํํ๊ธฐ
- ๊ตฌ๋งค ์๋๋งํผ ๋ก๋๋ฅผ ๋ฐํํ๋ค.
- ๋ก๋ ๋ฒํธ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
- ๋ฐํํ ๋ก๋๋ฅผ 1๊ฐ์ฉ ๋ชจ๋ ์ถ๋ ฅํ๋ค.
3. ๋น์ฒจ ๋ฒํธ ์
๋ ฅ๋ฐ๊ธฐ
- ๋น์ฒจ ๋ฒํธ๋ ์ผํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํด ์
๋ ฅ๋ฐ๋๋ค.
- ์์ธ ์ฒ๋ฆฌ :
- ๋ชจ๋ ๋ฒํธ๋ ์ซ์์ฌ์ผ ํ๋ค.
- ๋ชจ๋ ๋ฒํธ๋ 1~45 ์ฌ์ด์ ํฌํจ๋์ด์ผ ํ๋ค.
- ๋ฒํธ๋ ์ค๋ณต๋๋ฉด ์๋๋ค.
- ๋ฒํธ๋ 6๊ฐ์ฌ์ผ ํ๋ค.
4. ๋ณด๋์ค ๋ฒํธ ์
๋ ฅ๋ฐ๊ธฐ
- ๋ณด๋์ค ๋ฒํธ๋ฅผ 1๊ฐ ์
๋ ฅ๋ฐ๋๋ค.
- ์์ธ ์ฒ๋ฆฌ :
- ๋ณด๋์ค ๋ฒํธ๋ ์ซ์์ฌ์ผ ํ๋ค.
- ๋ณด๋์ค ๋ฒํธ๋ 1~45์ ์ฌ์ด์ ํฌํจ๋์ด์ผ ํ๋ค.
- ๋ณด๋์ค ๋ฒํธ๋ ๋น์ฒจ ๋ฒํธ์ ์๋ ๊ฐ๊ณผ ์ผ์นํ๋ฉด ์๋๋ค.
5. ๋ก๋ ๋ฒํธ์ ๋น์ฒจ ๋ฒํธ ๋น๊ตํ๊ธฐ
- ๊ฐ๊ฐ์ ๋ก๋ ๋ฒํธ์ ๋น์ฒจ ๋ฒํธ๋ฅผ ๋น๊ตํ๋ค.
- ๋น์ฒจ ๊ฐ์๋ฅผ ์ผ๋ค.
- ๋น์ฒจ ๋ฒํธ๊ฐ 2๊ฐ ์ดํ ํฌํจ๋์ด ์์ผ๋ฉด ๋น์ฒจ x
- ๋น์ฒจ ๋ฒํธ๊ฐ 3๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด 5๋ฑ
- ๋น์ฒจ ๋ฒํธ๊ฐ 4๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด 4๋ฑ
- ๋น์ฒจ ๋ฒํธ๊ฐ 5๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด๋น
- ๋ณด๋์ค ๋ฒํธ๊น์ง ํฌํจ๋๋ฉด 2๋ฑ
- ๋ณด๋์ค ๋ฒํธ๊ฐ ํฌํจ๋์ง ์์ผ๋ฉด 3๋ฑ
- ๋น์ฒจ ๋ฒํธ๊ฐ 6๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด 1๋ฑ
6. ๋น์ฒจ ํต๊ณ ์ถ๋ ฅํ๊ธฐ
- ๋น์ฒจ ๋ด์ญ๊ณผ ์ด ์์ต๋ฅ ์ ์ถ๋ ฅํ๋ค.
- ๋น์ฒจ ๋ด์ญ : 5๋ฑ๋ถํฐ 1๋ฑ๊น์ง ๋ฑ์๋ณ ๋น์ฒจ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ด ์์ต๋ฅ :
์ด ์์ต๊ธ = (๋น์ฒจ ๊ฐ์ * ๋น์ฒจ ๊ธ์ก)์ ํฉ
์ด ์์ต๋ฅ = ์ด ์์ต๊ธ / ๊ตฌ์
๊ธ์ก
- ์ด ์์ต๋ฅ ์ ์์์ ๋์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ๋ค.
๐ย ๋๋ฉ์ธ ํด๋์ค ์ค๋ช
๐ฒ Purchase Class
๊ตฌ์
๊ธ์ก์ ์
๋ ฅ๋ฐ๊ณ ๊ตฌ๋งค ์๋์ ๊ณ์ฐํ๋ ํด๋์ค
validate(input)
- ์ซ์๊ฐ ์๋๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
- 0์ด๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
- 1000์ผ๋ก ๋๋์ด ๋จ์ด์ง์ง ์์ผ๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
calcPurchaseQuantity(input)
- ๊ตฌ๋งค ์๋์ ๊ตฌํ๋ค.
๐ฑ LottoMachine Class
๊ตฌ๋งค ์๋๋งํผ ๋ก๋๋ฅผ ๋ฐํํ๋ ํด๋์ค
generateLotto()
- 1~45 ์ฌ์ด์ ๋๋ค ์ซ์ 6๊ฐ๋ฅผ ์์ฑํด ๋ฐฐ์ด์ ๋ด๋๋ค.
Random.pickUniqueNumbersInRange()
๋ฅผ ์ด์ฉํ๋ค.
- ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
generateAllLottos(input)
- ์
๋ ฅ๋ฐ์ ์๋งํผ ๋ก๋๋ฅผ ์์ฑํด ๋ฐฐ์ด์ ๋ด๋๋ค.
๐ WinningNumber Class
๋น์ฒจ ๋ฒํธ๋ฅผ ์
๋ ฅ๋ฐ๊ณ ๋ฐํํ๋ ํด๋์ค
returnWinningNumber()
- ์
๋ ฅ๋ฐ์ ๋น์ฒจ ๋ฒํธ๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ๋ค.
- Lotto ํด๋์ค๋ฅผ ํ์ฉํด ๋น์ฒจ ๋ฒํธ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ค.
- ์ ํจํ ๊ฒฝ์ฐ ๋น์ฒจ ๋ฒํธ๋ฅผ ๋ฐํํ๋ค.
โ Lotto Class
๋ก๋ ๋ฒํธ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ํด๋์ค
constructor(numbers)
- ์์ฑ์๋ก ๋ฒํธ๋ค์ ๋ด์ ๋ฐฐ์ด์ ์
๋ ฅ๋ฐ๊ณ ํ๋๋ก ์ ์ฅํ๋ค.
- ์
๋ ฅ๊ฐ์ ๊ธธ์ด๊ฐ 6์ด ์๋๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
- ๊ฐ ๋ฒํธ๊ฐ 1~45 ์ฌ์ด์ ๊ฐ์ด ์๋๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
- ๊ฐ ๋ฒํธ๊ฐ ์๋ก ์ค๋ณต๋๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
- ๊ฐ ๋ฒํธ๊ฐ ์ซ์๊ฐ ์๋๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
โ BonusNumber Class
๋ณด๋์ค ๋ฒํธ๋ฅผ ์
๋ ฅ๋ฐ๊ณ ๋ฐํํ๋ ํด๋์ค
validate(input)
- ์ซ์๊ฐ ์๋ ๊ฒฝ์ฐ ์์ธ ์ฒ๋ฆฌํ๋ค.
- 1~45 ์ฌ์ด์ ๊ฐ์ด ์๋๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
- ๋น์ฒจ ๋ฒํธ์ ์๋ ๊ฐ๊ณผ ์ผ์นํ๋ฉด ์์ธ ์ฒ๋ฆฌํ๋ค.
๐ Ranking Class
๋ก๋ ๋ฒํธ์ ๋น์ฒจ ๋ฒํธ & ๋ณด๋์ค ๋ฒํธ๋ฅผ ๋น๊ตํ๋ ํด๋์ค
compareRank(lotto_list, winning_number, bonus_number)
- ๊ฐ๊ฐ์ ๋ก๋ ๋ฒํธ์ ๋น์ฒจ ๋ฒํธ๋ฅผ ๋น๊ตํ๋ค.
- ๋ก๋ ๋ฒํธ์ ๋ณด๋์ค ๋ฒํธ๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ค.
- ๋ฑ์๋ณ๋ก ๋น์ฒจ ๊ฐ์๋ฅผ ์ผ๋ค.
๐ธ Profit Class
์ด ์์ต๋ฅ ์ ๊ณ์ฐํ๋ ํด๋์ค
calcProfit(ranking, purchase_amount)
- ์ด ์์ต๊ธ์ ๊ณ์ฐํ๋ค.
- ์ด ์์ต๋ฅ ์ ๊ณ์ฐํด ์์์ ๋์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํด ๋ฐํํ๋ค.
์ฝ๋
https://github.com/Doozuu/javascript-lotto-6/tree/doozuu
๊ฐ์ ํ ์
- ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ค๊ฐ์ ์
๋ฐ์ดํธ ํ๋ฉด์ ๊ฐ์ ํด๋๊ฐ์ต๋๋ค.
- ๊ฒ์ ์ ์ฐจ์ ๋๋ฉ์ธ ํด๋์ค์ ๋ํ ์ค๋ช
์ ๋ฆฌ๋๋ฏธ์ ์์ฑํ๋ฉฐ ๊ฒ์์ ๋ํ ์ดํด๋ฅผ ๋์ผ ์ ์์์ต๋๋ค.
- ์ซ์, ์ถ๋ ฅ ๋ฉ์ธ์ง, ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๊ฐ๊ฐ ์์ ํ์ผ๋ก ๋ง๋ค์์ต๋๋ค.
- ์์ ํ์ผ๊ณผ print ํจ์๋ฅผ utils ํด๋์ ๋ฃ์ด ๊ด๋ฆฌํ์ต๋๋ค.
- ๋๋ฉ์ธ ๋จ์๋ก ํ์ผ์ ์์ฑํ๊ณ ํ
์คํธ ์ฝ๋๋ฅผ ๋ง๋ค์์ต๋๋ค.
- private fields๋ฅผ ์ฒ์ ์ ํด๋ณด๊ณ ์ฌ์ฉํด๋ณด์์ต๋๋ค.
- ํ
์คํธ ์ฝ๋ ์์ฑ ์ค, ๊ฐ์ฒด ๋น๊ต๋ฅผ toBe๊ฐ ์๋๋ผ toEqual๋ก ํด์ผ ํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ์๋ชป๋ ๊ฐ์ ์
๋ ฅํ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ์ข
๋ฃ์์ผฐ๋๋ฐ, ์๊ตฌ์ฌํญ์ ๋ค์ ๊ผผ๊ผผํ ์ฝ๊ณ ๋ ํ ์
๋ ฅ์ ๋ค์ ๋ฐ์์ผ ํ๋ค๋ ์ ์ ์๊ฒ ๋์์ต๋๋ค. ์๊ตฌ์ฌํญ์ ๋ ๊ผผ๊ผผํ ์ฝ์ด์ผ๊ฒ ๋ค๊ณ ๋๊ผ์ต๋๋ค.
- ๋ํ, ์ฒ์์๋ ๋ก๋๋ฅผ ์์ฑํ ๋ ์ด์ ์ ์ฌ์ฉํ๋ ๋๋ค ์ซ์ picker๋ฅผ ์ฌ์ฉํ์ง๋ง ์๊ตฌ์ฌํญ์ ๋ค์ ์ฝ๊ณ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
- ์ด ์์ต๋ฅ ์ ๊ณ์ฐํ ๋ toFixed(2)๋ฅผ ๋ ์๋ฆฌ ์์์ ๋ฐ์ฌ๋ฆผํ๋ ๊ฑฐ๋ผ๊ณ ์ฐฉ๊ฐํด ํ๋ ธ์๋๋ฐ, toFixed(1)๋ก ๋ฐ๊ฟ์ ํด๊ฒฐํ์ต๋๋ค.
โ๏ธ 3์ฃผ์ฐจ ๊ณผ์ ์๋ฃ!
