Skip to content

[๐Ÿš€ ์‚ฌ์ดํด2 - ๋ฏธ์…˜ (๋ธ”๋ž™์žญ ๋ฒ ํŒ…)] ๋ผํ‹ฐ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#1123

Open
kdongsu5509 wants to merge 137 commits intowoowacourse:kdongsu5509from
kdongsu5509:step2
Open

Conversation

@kdongsu5509
Copy link

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

์ด๋ฒˆ์— ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋œ BetAmount ๋„๋ฉ”์ธ์€ Player ๊ฐ์ฒด๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ 3๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ง๋ผ๋Š” ์ œํ•œ ์กฐ๊ฑด์„ ์–ด๊ธฐ๋ฉด์„œ ์‹œ๋„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ‘๊ทผ์ด ์ ํ•ฉํ–ˆ์„ ์ง€ ์•„์ง ํ™•์‹ ์„ ๊ฐ€์ง€์ง€๋Š” ๋ชปํ•˜์—ฌ์„œ ์•„์ง ์ฐ์ฐํ•จ์„ ๋А๋ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฐ ์ฐ์ฐํ•จ์ด ๋А๊ปด์ง€๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ถ€๋ถ„์ด ์กด์žฌํ•˜์ง€๋งŒ ํŠนํžˆ ์ด์ „์—๋Š” Hand ์˜ ์ •๋ณด๋กœ๋งŒ ๊ฒŒ์ž„ ๊ฒฐ๊ณผ๋ฅผ ํŒ๋‹จํ•˜๋ฉด ๋˜์–ด์„œ GameState ๊ฐ€ ๊ด€๋ฆฌํ•˜๋˜ ๊ฒฐ๊ณผ ๋น„๊ต ๋ฉ”์„œ๋“œ๋ฅผ BetAmount ์ •๋ณด๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•จ์— ๋”ฐ๋ผ Player ๋กœ ์œ„์น˜๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— ์ด์ „์˜ ์ฑ…์ž„ ๋ถ„๋ฐฐ๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์ธ์ง€ ํ˜น์€ ํ˜„์žฌ์˜ ์ฑ…์ž„์ด ์ž˜๋ชป๋œ ๊ฒƒ์ธ์ง€ ํŒ๋‹จ์ด ์–ด๋ ค์›€ ์ ์ด ๊ฐ€์žฅ ํฐ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ์— ํ”Œ๋ ˆ์ด์–ด์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋จ์— ๋”ฐ๋ผ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋กœ์ง์ด ์ƒ๋‹น ์ˆ˜ ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜์—ฌ, ํ˜„์žฌ์˜ ๋ฐฉ์‹์ธ BetAmount.empty() ๋ฅผ ํ†ตํ•œ 0 ๊ฐ’์„ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž์™€, bet() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ์ž…๋ ฅ๋ฐ›์€ ๊ธˆ์•ก์„ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด BetAmount ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ…Œ์ŠคํŠธ ๋ณ€๊ฒฝ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๊ณ , ์ถ”๊ฐ€๋กœ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์„ ๊ฒƒ์ด๋‹ค๋ผ๋Š” ํŒ๋‹จ์„ ํ•˜์—ฌ์„œ ์‹œ๋„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.


์ถ”๊ฐ€์ ์œผ๋กœ ์ด์ „ step1 ์—์„œ ๋ฆฌ๋ทฐ์–ด๋‹˜์ด ๋‚จ๊ฒจ์ฃผ์‹  ๋ฆฌ๋ทฐ๋ฅผ ์„  ๋ฐ˜์˜์„ ํ•ด๋ณด๋‹ˆ ์ด๋ฒˆ ๋ฒ ํŒ…ํ•˜๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋“ค๊ณผ ํ๋ฆ„์„ ์ƒ๋‹นํžˆ ํŽธํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜์ด ๋•๋ถ„์— ๊ฐ์ฒด ์ง€ํ–ฅ์—์„œ๋„ ์ฝ๊ธฐ ์‰ฌ์›€ ์ฝ”๋“œ์˜ ์ค‘์š”์„ฑ์„ ๋†“์น˜๋ฉด ์•ˆ๋˜๊ฒ ๋‹ค๋ผ๋Š” ์ƒ๊ฐ ์—ญ์‹œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๊ณ , ๊ทธ๋“ค์˜ ๊ณตํ†ต ์กฐ์ƒ์ธ ์ฐธ๊ฐ€์ž๋ฅผ ์ถ”๊ฐ€ํ•จ.
์ดํ›„ ์นด๋“œ์™€ ์นด๋“œ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฑ์˜ ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ•จ.
- ์‹ ๊ทœ ๋ฑ ์ œ๊ณต ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
- ์นด๋“œ ๋ฝ‘๊ธฐ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€(์ •์ƒ, ์‹คํŒจ)
- ์ƒˆ๋กœ์šด ๋ฑ ์ œ๊ณต ๊ธฐ๋Šฅ
- ์นด๋“œ ์„ ํƒ ๊ธฐ๋Šฅ
์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Ace ๊ฐ’ ํŒ์ •๊ณผ ์ „์ฒด ์นด๋“œ ์ ์ˆ˜ ํ•ฉ ๊ธฐ๋Šฅ์€ ์ƒํ˜ธ ์˜์กด์„ฑ์„ ๋„๊ธฐ ๋•Œ๋ฌธ์— Ace๋Š” ์ œ์™ธํ•œ ์นด๋“œ ์ ์ˆ˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•จ.
- add card score total sum feature
- add bust discrimination feature
๋”œ๋Ÿฌ ์ƒ์„ฑ ์‹œ ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ Deck์˜ ์ธ์Šคํ„ด์Šค ์ข…๋ฅ˜๋ฅผ ๋ช…์‹œํ•จ
๊ณตํ†ต ๋กœ์ง์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด participant ์ถ”๊ฐ€
๋”œ๋Ÿฌ๋งŒ์˜ ๊ณ ์œ ํ•œ ์นด๋“œ ์ถ”๊ฐ€ ๋กœ์ง์„ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐจํ›„ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ addCard ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ ํ˜„์žฌ ์„ค๊ณ„์ƒ์œผ๋กœ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— UnsupportedOperationException์„ ๋˜์ง€๋Š” ๊ฒƒ์œผ๋กœ override ํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค
- ๋ชจ๋“  ์›์‹œ ๊ฐ’๊ณผ ๋ฌธ์ž์—ด์„ ํฌ์žฅํ•œ๋‹ค๋ผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ 3๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ผ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์ƒํƒœ ํŒจํ„ด ๋„์ž…
๋กœ์ปฌ รฌยฝ์ฝ”๋“œ๋ฅผ ๋ณ‘ํ•ฉํ•˜์ง€ ์•Š๊ณ  ์ง„ํ–‰ํ•œ ์ˆ˜์ •์œผ๋กœ ์ธํ•œ ์ถฉ๋Œ ํ•ด๊ฒฐ
์ฐพ๊ธฐ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ. ํ˜„์žฌ๋Š” n=5๋ผ๋Š” ์กฐ๊ฑด ๋•Œ๋ฌธ์— ์ฐพ๊ธฐ ์‹œ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜์œผ๋‚˜, ์ด ๋˜ํ•œ ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•œ ์š”๊ตฌ์‚ฌํ•ญ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•จ
๋ณต์žกํ•œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ game state ๊ตฌ์กฐ ์ •๋ฆฌ
- ํผ๋ธ”๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ์ฒด๋ณ„ ์ฑ…์ž„์„ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ •๋ฆฌํ•˜์˜€์Œ
@echo724 echo724 self-requested a review March 16, 2026 08:18
Copy link

@echo724 echo724 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•ˆ๋…•ํ•˜์„ธ์š” ๋ผํ‹ฐ!
์ผ๋‹จ ๋ฆฌ๋ทฐ ๊ธฐ๋‹ค๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ๋“œ๋ฆฌ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์ฃ„์†กํ•˜๋„ค์š”. ๊ทธ๋ž˜๋„ ๊ธฐ๋‹ค๋ฆฌ์‹  ๋งŒํผ ์ข‹์€ ํ”ผ๋“œ๋ฐฑ ๋‚จ๊ธฐ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค! ํ”ผ๋“œ๋ฐฑ ๋“œ๋ฆฌ๊ธฐ ์ด์ „์—, ์ผ๋‹จ ์ง€๋‚œ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ๋„ˆ๋ฌด ์ž˜ ํ•ด์ฃผ์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๊ฒŒ์ž„ ์ƒํƒœ๋ฅผ ์ค„์—ฌ์„œ ์ฝ”๋“œ ์ดํ•ด๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ง„๊ฒŒ ๋ˆˆ์— ๋ณด์ด๋”๋ผ๊ตฌ์š”! ์ž˜ ํ•™์Šตํ•˜์‹œ๊ณ  ์ ์šฉํ•˜์‹  ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™์•„ ๋ณด์ž…๋‹ˆ๋‹ค ใ…Žใ…Ž

์ปค๋ฉ˜ํŠธ ์™ธ์—๋„ ์ „๋ฐ˜์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ๋“œ๋ฆฌ์ž๋ฉด, ์•„๋ž˜ ๋ถ€๋ถ„์„ ์ข€ ๋” ์‹ ๊ฒฝ ์จ๋ณด์‹œ๋ฉด ์„ฑ์žฅ์— ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์•„์„œ ๋‚จ๊น๋‹ˆ๋‹ค.

  • ์บก์Аํ™”: ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ์ƒํƒœ(๊ฐ’)๋“ค์„ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•ด๋ณด์‹œ๊ณ , ํ•ด๋‹น ๊ฐ์ฒด์—์„œ ๊ฐ’์„ ๋นผ์˜ค๊ธฐ ๋ณด๋‹ค๋Š” ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’๋“ค๋กœ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•ด์˜ค๋Š” ์‹์œผ๋กœ ์„ค๊ณ„ํ•ด๋ณด์‹œ๋ฉด ์ข‹์„๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด ๋‚ด๋ถ€์— ๊ฐ’์ด ๋Œ€๋ถ€๋ถ„ ์žˆ๋Š”๋ฐ, ๊ฐ์ฒด ์™ธ๋ถ€๋กœ ๊บผ๋‚ด์„œ ๋‹ค์‹œ ์ฃผ์ž…ํ•˜๋Š” ํ˜•ํƒœ์˜ ์ฝ”๋“œ๊ฐ€ ์ข…์ข… ๋ณด์ด๋”๋ผ๊ตฌ์š”. (ex MultiPlayers). ์ด ๋ถ€๋ถ„ ์‹ ๊ฒฝ์จ์„œ ๋ด๋ณด์‹œ๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ์— ๋งž๋Š” ์ฝ”๋“œ, ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด์ง€ํ–ฅ์ด ์•„๋‹ˆ๋”๋ผ๋„ ์œ ์ง€ ๋ณด์ˆ˜/๊ฐ€๋…์„ฑ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์งœ๋Š”๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๊ณ ๋ ค: ํ˜„์žฌ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ํŠน์ • ์ƒํƒœ์˜ ๊ฐ์ฒด(e.g. Player)๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์—์„œ ์ŠคํŠธ๋ฆผ ์ˆœํšŒ๋ฅผ ํ•ด์„œ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ  ์žˆ๋”๋ผ๊ตฌ์š”. ํ•œ ๋ฒˆ ์ˆœํšŒํ•ด์„œ ์ฐพ์€ ๊ฐ’์ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ˆœํšŒํ•ด์„œ ์ฐพ์„ ๋•Œ ๋ฆฌํ„ด๊ฐ’๊ณผ ์ผ์น˜ํ•œ๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ํ˜„์žฌ๋Š” ์„ฑ๋Šฅ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋ฟ๋”๋Ÿฌ, ๋‹ค์ค‘ ์‚ฌ์šฉ์ž๋‚˜ ๋‹ค์ค‘ ๊ฒŒ์ž„ ์‹คํ–‰ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ธธ ๊ฒฝ์šฐ ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ํ˜น์‹œ ์ด๋Ÿฐ ํŒจํ„ด์œผ๋กœ ์ž‘์„ฑํ•˜์‹  ๊ตฌ์ฒด์ ์ธ ์ด์œ ๊ฐ€ ์žˆ์„๊นŒ์š”? ์žˆ๋‹ค๋ฉด ๊ณต์œ ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋งŒ์•ฝ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋ฐœ์ƒ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผํ•ด๋ณด์‹œ๊ณ  ํ•™์Šตํ•ด๋ณด์‹œ๋ฉด ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

์ด ๋ถ€๋ถ„๋“ค ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •ํ•ด๋ณด์‹œ๊ณ  ๋ฆฌ๋ทฐ ์š”์ฒญ ๋‹ค์‹œ ํ•ด์ฃผ์„ธ์š”! ํ™”์ดํŒ…์ž…๋‹ˆ๋‹ค~

Comment on lines +39 to +40
while (game.whoseBettingTurn().isPresent()) {
Player currentPlayer = game.whoseBettingTurn().get();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด ๋ถ€๋ถ„ ์ง€๋‚œ ๋ฆฌ๋ทฐ์—๋„ ๋‚จ๊ฒผ๋Š”๋ฐ, ํ˜น์‹œ ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ์š”? whoseBettingTurn ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๊ตฌ์กฐ์ธ๋ฐ, ์ด๋ ‡๊ฒŒ ๋‘ ๋ฒˆ ํ˜ธ์ถœ ๋  ๊ฒฝ์šฐ ๋ฌธ์ œ๋Š” ์—†์„๊นŒ์š”? ์„ฑ๋Šฅ ๋ฌธ์ œ๋„, ๋™์‹œ์„ฑ ๋ฌธ์ œ๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ ์ƒ๊ฐํ•ด๋ณด์‹œ๋ฉด ํ•™์Šต์— ๋„์›€์ด ๋ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์กฐํšŒํ•˜๋Š” ์‹œ์ ๊ณผ ์‹ค์ œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ์‹œ์ ์ด ๋‹ฌ๋ผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์šฐ์„  game.whoseBettingTurn() ์„ ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœํ•œ ๋’ค, ๋น„์–ด์žˆ์œผ๋ฉด break ๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ทธ ๋‹ค์Œ์œผ๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ Queue<String> ๋ฅผ ๋‘์–ด ์•„์ง ๋ฒ ํŒ…์„ ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋งŒ์„ ๊ด€๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

while (game.whoseBettingTurn().isPresent()) {
Player currentPlayer = game.whoseBettingTurn().get();
outputView.printBetAmountPrompt(currentPlayer.getName());
String betAmountValue = retry(inputView::readBetAmountValue);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

retry ์žฌํ™œ์šฉ ๊ตณ์ž…๋‹ˆ๋‹ค! ์ž˜ ์งœ์…จ๋„ค์š” ใ…Žใ…Ž

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜

Comment on lines +53 to +55
Player target = multiPlayers.findNotBetPlayer()
.orElseThrow(() -> new IllegalStateException(ErrorMessage.NO_MORE_BETTABLE_PLAYER.getMessage()));
multiPlayers.executeBet(target, betAmountValue);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด ๋ถ€๋ถ„ ์–ด์ฐจํ”ผ multiPlayers์—๊ฒŒ player๋ฅผ ์ฐพ์•„์„œ betAmountValue์™€ ํ•จ๊ป˜ ๋‹ค์‹œ multiPlayers์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ˜•ํƒœ๋ผ๋ฉด, ๊ทธ๋ƒฅ executeBet ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•˜๊ณ  ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ target์„ ์ฐพ์œผ๋ฉด ๋˜์ง€ ์•Š์„๊นŒ์š”? ์™ธ๋ถ€๋กœ ๊ฐ’์„ ๋นผ์˜ฌ ๋•Œ๋Š” ๋นผ์™€์•ผ๋งŒ ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ์ด์œ ๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. (ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ๋‹ค๋˜๊ฐ€, ๋ทฐ์—์„œ ํ•„์š”๋กœ ํ•œ๋‹ค๋˜๊ฐ€) ์•ˆ๊ทธ๋Ÿฌ๋ฉด ์บก์Аํ™”๋„ ๊นจ์ง€๊ณ , ์‘์ง‘๋„๋„ ์ค„์–ด๋“ค๊ฒ ์ฃ ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฒƒ์„ ๋จธ๋ฆฌ๋กœ๋Š” ์ดํ•ดํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ฝ”๋“œ์—์„œ ์ฐพ๊ธฐ๊ฐ€ ์ฐธ ํž˜๋“œ๋„ค์š”๐Ÿ˜… ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!!

}

public void doBetProcess(String betAmountValue) {
Player target = multiPlayers.findNotBetPlayer()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ทผ๋ฐ ์•„๋ž˜ ์ปค๋ฉ˜ํŠธ๋ณด๋‹ค ์ข€ ์ค‘์š”ํ•˜๊ฒŒ ๋ณผ ๋ถ€๋ถ„์€ ์ด ๋ถ€๋ถ„์ธ๋ฐ์š”, ์–ด๋–ป๊ฒŒ ํŠน์ • ํ”Œ๋ ˆ์ด์–ด๊ฒŒ ์ž…๋ ฅ๋ฐ›์€ betAmountValue๊ฐ€ ์—ฌ๊ธฐ์„œ ์ฐพ์€ target์˜ bet์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์ฃ ? ๋งŒ์•ฝ ์ž…๋ ฅํ•œ ํ”Œ๋ ˆ์ด์–ด์™€ ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ฐพ์•„์ง€๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜์ฃ ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ผ๋‹จ ๋  ๊ฒƒ์ด๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๊ณ  ์ž‘์„ฑํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ whoseTurn ๋ฉ”์„œ๋“œ์—์„œ Player ๊ฐ€ ๋…ธ์ถœ๋œ ๋งŒํผ Player ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋ถ€๋ถ„์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์–ด์„œ ์ ์šฉํ–ˆ๋Š”๋ฐ, ๋ฌธ์ œ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Comment on lines +19 to +23
public String readBetAmountValue() {
String line = sc.nextLine();
validateIsBlank(line);
return line;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด ๋ถ€๋ถ„์—์„œ betAmount๋ฅผ String Type์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ•ด๋‹น ๊ฐ’์„ Game์—์„œ๋ถ€ํ„ฐ Player๊นŒ์ง€ ๋„˜๊ธด ํ›„์—์•ผ BetAmount์— ๋Œ€ํ•œ ๊ฐ’ ๊ฒ€์ฆ์ด ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ์š”, ๋งŒ์•ฝ BetAmount ๊ฐ’์ด ์ž˜๋ชป ๋˜์—ˆ์„ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ž…๋ ฅ ๋‹จ๊ณผ ๊ฐ€๊นŒ์šด ๊ณณ์—์„œ ๊ฐ’ ๊ฒ€์ฆ์ด ์ด๋ฃจ์–ด์ ธ์•ผํ•˜์ง€ ์•Š์„๊นŒ์š”? retry๋„ ๋˜์–ด์žˆ๋Š”๋ฐ ์‚ฌ์‹ค ๊ฒ€์ฆ์ด ์ž…๋ ฅ๋‹จ์—์„œ ์ด๋ฃจ์–ด์ง€๋ฉด betAmount ๊ฐ’์ด ์ž˜๋ชป๋˜๋„ ์œ ์ €๋Š” ๋ฆฌํŠธ๋ผ์ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒ ์ฃ ? ๊ทธ๋ž˜์„œ ์ด ๋ถ€๋ถ„ ๋ฆฌํ„ด๊ฐ’์„ BetAmount๋กœ ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ์š”? ๋ฌธ์ œ๊ฐ€ ์žˆ์„๊นŒ์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด๋ ‡๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ View ๊ณ„์ธต์—์„œ Domain ๊ณ„์ธต์„ ์•Œ๊ฒŒ ๋œ๋А ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค! ์ ˆ์ถฉ์•ˆ(?)์œผ๋กœ ์ ์ ˆํ•  ์ง€ ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ธ ์–‘์ˆ˜ ์ด์–ด์•ผ ํ•จ์€ BetAmount ์—์„œ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•˜๊ณ  InputView ์—์„œ๋Š” ์ •์ˆ˜ ๊ฒ€์ฆ์„ ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋Š” ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ๊ฒ€์ฆ์˜ ๊ตฌ๋ถ„์ด๋ผ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์žก๊ณ  ์ˆ˜์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

validateIsBlank(input);
validateHitOrStandValue(input);
return input;
return input.equals("y");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"y"๊ฐ€ ์ค‘๋ณตํ•ด์„œ ์ฝ”๋“œ์— ๋“ฑ์žฅํ•˜๋Š” ๊ตฐ์š”? ํ˜น์‹œ ์ด ๋ถ€๋ถ„ ๋ฌธ์ž๊ฐ€ y๊ฐ€ ์•„๋‹Œ yes๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ทธ๋Ÿฌ๋ฉด HIT_OR_STAND ๊ฐ’๋„ ๊ฐ™์ด ๋ฐ”๊ฟ”์ค˜์•ผํ•˜์ฃ ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ธฐ๋ณธ์ ์ธ ์‹ค์ˆ˜๋ฅผ ํ•˜์˜€๋„ค์š” ๐Ÿ˜… static ๋ณ€์ˆ˜๋กœ์˜ ๋„์ž… ๋ฐ ์ค‘๋ณต ์ œ๊ฑฐ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!!

import java.util.List;
import java.util.function.Supplier;

public interface GameState {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด ๋ถ€๋ถ„ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ์ž˜ํ•ด์ฃผ์…จ๋„ค์š”! ํ™•์‹คํžˆ ์ƒํƒœ์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“œ๋‹ˆ ์ฝ”๋“œ ์ฝ๊ธฐ๊ฐ€ ํ›จ์”ฌ ํŽธํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค๋Š” ์˜๋ฏธ๋Š” ์ฝ”๋“œ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ๋„ ์ข‹์•„์ง„๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์งค๋•Œ๋Š” ๋ชจ๋“  ์ปจํ…์ŠคํŠธ๊ฐ€ ๋จธ๋ฆฌ์— ์žˆ์–ด์„œ ์ดํ•ด๊ฐ€ ์‰ฝ์ง€๋งŒ, ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋„ ํ•˜๊ณ  ์ด๋ฆฌ์ €๋ฆฌ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋˜ ์ปจํ…์ŠคํŠธ๋Š” ๋ณ„๋กœ ๋‚จ์ง€ ์•Š์•„์„œ ๊ฒฐ๊ตญ์—๋Š” ๊ฐ€๋…์„ฑ์ด ์ค‘์š”ํ•ด์ง€๋”๋ผ๊ตฌ์š”.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฆฌ๋ทฐ์–ด๋‹˜์˜ ์ด์ „ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ์ €๋„ ์ฝ์–ด๋ณด๋‹ˆ ํ™•์‹คํžˆ ํŽธํ•ด์ง์„ ๋А๋‚„ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!!

Comment on lines 25 to 32
public Dealer addCard(Supplier<Card> cardSupplier) {
GameState newGameState = gameState.hit(cardSupplier);
return Dealer.from(newGameState);
if (gameState.getCardsSum() <= DEALER_CARD_SUM_MIN) {
GameState newGameState = gameState.hit(cardSupplier);
return Dealer.from(newGameState);
}
GameState stayGameState = gameState.stay();
return Dealer.from(stayGameState);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ง€๋‚œ ๋ฆฌ๋ทฐ์—์„œ ๋†“์น˜๊ธด ํ–ˆ๋Š”๋ฐ, Dealer ํƒ€์ž…์ด ๋ถˆ๋ณ€์ผ ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ์š”? ์„ ํ˜ธ์˜ ์˜์—ญ์ด๊ธฐ๋„ ํ•œ๋ฐ, ์ œ๊ฐ€ ์–ด์ƒ‰ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ Game์˜ ๊ฒฝ์šฐ, ์ƒํƒœ๋กœ Dealer๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์„œ, Dealer๋ฅผ ๋ถˆ๋ณ€์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ this.dealer = newDealer ์ด๋ถ€๋ถ„์„ ๋ฐ˜๋“œ์‹œ ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์„ ์‹ค์ˆ˜๋กœ ๋†“์น  ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์‹ค์ œ๋กœ ๊ทธ๋Ÿฐ ์ ๋„ ๋ช‡ ๋ฒˆ ๋ดค๊ตฌ์š”) ๊ทธ๋ž˜์„œ Dealer๊ฐ€ ์ด๋ฆฌ์ €๋ฆฌ ์—ฌ๋Ÿฌ ๊ตฐ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ƒํƒœ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ๊ฐ€๋ณ€์„ ๊ณ ๋ คํ•ด๋ณผ ๊ฒƒ ๊ฐ™์•„์š”. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด๋ฒˆ ์‚ฌ์ดํด 2์˜ ํ† ๋ก  ํ™œ๋™์˜ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋งŒ ์‚ฌ์šฉํ•œ๋‹ค ๋ผ๋Š” ์กฐ๊ฑด์ด ์žˆ์–ด์„œ ํ•ด๋‹น ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ด ๊ณผ์ •์—์„œ ๋ฆฌ๋ทฐ์–ด๋‹˜์ด ๋‚จ๊ฒจ์ฃผ์…จ๋˜ ๋ฌธ์ œ ์—ญ์‹œ ๊ฒฝํ—˜ํ•˜์—ฌ์„œ ๋ฆฌ๋ทฐ์–ด๋‹˜์˜ ์˜๊ฒฌ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค!! ์ด๋Ÿฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋‹ˆ, ๊ฒฐ๊ตญ ์ค‘๊ฐ„์— ๋ถˆ๋ณ€ ๊ฐ์ฒด์˜ ์‚ฌ์šฉ์„ ๋Š์–ด๋‚ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์กด์žฌํ•˜์˜€๊ณ , ์ €๋Š” ์ด ๋ถ€๋ถ„์—์„œ ์šฐ์„  BlackJackGame ์—์„œ Dealer ๋ถˆ๋ณ€ ๊ฐ์ฒด์˜ ์ „ํŒŒ๋ฅผ ๋Š์—ˆ๊ณ , MultiPlayers ์—์„œ Players ์˜ ์ƒํƒœ๋ฅผ ํ๋ฆ„ ์ œ์–ด ๋ผ๋Š” ์ด์œ ๋กœ ๋Š์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ƒํƒœ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ ์—๋„ ๋ถˆ๋ณ€ ์ƒํƒœ๋กœ ์ธํ•˜์—ฌ ๋‹ค๋ฅธ ๊ฐ์ฒด๋„ ๋ถˆ๋ณ€์ด ๋˜์–ด์•ผ ํ•˜๋Š” ํ˜„์ƒ์˜ ์ „ํŒŒ๋ฅผ ์ค‘๊ฐ„์— ๋Š์„ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์กฐ๊ฑด์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

Copy link
Author

@kdongsu5509 kdongsu5509 Mar 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์žฌ๊ฒ€ํ† ํ•ด๋ณด๋‹ˆ, Player์™€ Dealer์˜ ๊ณตํ†ต ๋ถ€๋ชจ์ธ Participant์—์„œ Hand๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ์–ด๋‹˜ ๋ง์”€๋Œ€๋กœ Dealer๋ฅผ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋กœ ๋‘๋”๋ผ๋„, ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Hand๋Š” ์—ฌ์ „ํžˆ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ Hand์˜ ์„ฑ๊ฒฉ์„ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉด DealerHand์™€ ๊ฐ™์€ ๋ณ„๋„์˜ ๊ตฌํ˜„์ฒด๊ฐ€ ํ•„์š”ํ•ด์ง€๋Š”๋ฐ, ์ด๋Š” ์˜คํžˆ๋ ค ์ƒ์†์„ ํ†ตํ•œ ๊ตฌ์กฐ์  ์ด์ ์„ ์žƒ๊ฒŒ ๋˜์–ด ํ˜„์žฌ์ฒ˜๋Ÿผ Participant๊ฐ€ ๋ถˆ๋ณ€ Hand๋ฅผ ๋ณด์œ ํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Dealer๋„ ์šฐ์„ ์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋‘๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ทธ๋ ‡๊ตฐ์š”! ์„ค๊ณ„์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ด์œ ์™€ ๊ณ ๋ฏผ์ด ์žˆ๋‹ค๋ฉด, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฑธ ๋ง๋กœ ์ž˜ ์„ค๋“ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ €๋Š” ์ž˜ ์„ค๊ณ„ ํ•˜์…จ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์„ ํƒํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ๋Š” ์žฅ๋‹จ์ ๊ณผ ์ƒํ™ฉ ๊ณ ๋ ค๋ฅผ ์ž˜ ํ•ด๋ณด์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค!

Comment on lines +12 to +14
public static PlayerResultDto from(Player player, Dealer dealer) {
GameResult gameResult = player.calculateGameResult(dealer);
double earnMoney = gameResult.getAllocation() * player.getBetAmount();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DTO์ธ๋ฐ ๊ฒŒ์ž„ ๊ณ„์‚ฐ/๊ฒฐ๊ณผ ๋„์ถœ ๋กœ์ง์ด ์ด ๋ถ€๋ถ„์— ์žˆ๊ตฐ์š”? ํ˜ธ์ถœ์ž ์ž…์žฅ์—์„œ๋Š” DTO ์ƒ์„ฑ ๋กœ์ง์ธ์ค„ ์•Œ๊ณ  ์žˆ์„ํ…๋ฐ, ์˜๋„์น˜ ์•Š์€ ํ–‰์œ„๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์„๊นŒ์š”?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

earnMoney ๊ณ„์‚ฐ ํ•˜๋Š” ๋ถ€๋ถ„ calculateGameResult ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ์š”?

}

@Test
@DisplayName("๋ฒ ํŒ…์„ ์•ˆํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์œผ๋ฉด ์ œ๊ณตํ•œ๋‹ค")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ œ๊ฐ€ ๋†“์นœ ๊ฒƒ์ผ ์ˆ˜ ๋„ ์žˆ๋Š”๋ฐ ํ•ต์‹ฌ์ธ ๋ฒ ํŒ… ๊ณ„์‚ฐ ๋กœ์ง ํ…Œ์ŠคํŠธ๊ฐ€ ์•ˆ๋ณด์ด๋„ค์š”? ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ด ๋ณด์ด๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋„ ๋ฆฌ๋ทฐ์–ด๋‹˜์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ณ„์‚ฐ ๋กœ์ง์ด PlayerResultDto ์— ์กด์žฌํ•˜๊ฒŒ ๋˜์–ด ํ…Œ์ŠคํŠธ ๊ณผ์ •์ด ๋ˆ„๋ฝ๋˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. dto ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ํ•  ํ•„์š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์˜€๋Š”๋ฐ, dto์— ๋น„์ฆˆ๋‹ˆ์Šค(?) ๋กœ์ง์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด์„œ ์ „๋ฐ˜์ ์œผ๋กœ ๋ˆ„๋ฝ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

"y"๊ฐ€ ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์ œ๊ฑฐ. ์ถ”๊ฐ€์ ์œผ๋กœ HitOrStand์™€ ์ค‘๋ณต๋œ ๊ฐ’์ด์–ด์„œ ๋ณ€์ˆ˜ํ™” ์ง„ํ–‰
dto์— ๋“ค์–ด๊ฐ€์žˆ๋Š” ๊ฒฐ๊ณผ ๋กœ์ง์„ ์ œ๊ฑฐ. ์ดํ›„ ๊ณต๊ฐœ๊ฐ€ ๋ถˆํ•„์š”ํ•ด์ง„ calculateGameResult๋ฅผ private ์œผ๋กœ ์ „ํ™˜
์‚ฌ์šฉ์ž๊ฐ€ ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ์ž…๋ ฅ ๋‹จ๊ณ„์—์„œ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋ฅผ ์ œ๊ฑฐ
Scanner ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ต์ฒด
- `Player` ๋ฅผ ์ „๋‹ฌํ•จ์œผ๋กœ์จ `Player` ๋ถ€์ •ํ•ฉ ๊ฐ€๋Šฅ์„ฑ ๋ฐฐ์ œ.
- `์กฐํšŒ` ์™€ `๋ช…๋ น`์˜ ๋ถ„๋ฆฌ์— ๋”ฐ๋ฅธ ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
- `MultiPlayers`์˜ ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์€ ๋ถ€๋ถ„ ์ˆ˜์ •('BlackJackGame' ์˜ ์ฝ”๋“œ ์ œ๊ฑฐ ํ›„ ์ถ”๊ฐ€)
@kdongsu5509
Copy link
Author

๋ฆฌ๋ทฐ์–ด๋‹˜์ด ์ฃผ์‹  ์บก์Аํ™”์˜ ๊ฐœ๋…์„ ๋ถ„๋ช…ํžˆ ์•Œ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ์ œ ์ฝ”๋“œ์—์„œ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ํž˜๋“œ๋„ค์š”๐Ÿ˜… ํ•ญ์ƒ ์ฒ˜์Œ ์ž‘์„ฑํ•  ๋•Œ ์ž˜ ์ž‘์„ฑํ•ด์•ผ ํ•จ์„ ๋А๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹

stream ์„ ์ด์šฉํ•ด์„œ ์ฐพ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•œ ์ด์œ ๋Š” ์ตœ์ดˆ์—๋Š” List ํƒ€์ž…์œผ๋กœ ์ž‘์„ฑํ•˜์—ฌ์„œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ Map ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ณผ์ •์—์„œ ์ˆ˜์ •์„ ์ ์ ˆํžˆ ํ•˜์˜€์–ด์•ผ ํ•˜๋Š”๋ฐ ๋Œ์•„๊ฐ€๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์šฐ์„ ์‹œ ํ•˜๋‹ค ๋ณด๋‹ˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ด๋†“๊ณ  ๋‚˜์ค‘์— ํ•˜์ž๋ผ๊ณ  ํ•œ ๋ถ€๋ถ„์„ ๋†“์น˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ๋Š” ์ด์ „์˜ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ˆœํšŒ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  Map ์˜ ํŠน์„ฑ์„ ์‚ด๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด Queue<String> ์— Map ์˜ key๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฆ„์„ ๋„ฃ์–ด ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.,

๋”œ๋Ÿฌ์˜ ํ•ฉ์ด 16์ด์ƒ์ผ ๋•Œ์—๋„ ์นด๋“œ ์ถ”๊ฐ€ ๋กœ์ง์ด ์ž‘๋™ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด isDealerFull ๋ฐ ๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€
@echo724 echo724 self-requested a review March 17, 2026 12:49
Copy link

@echo724 echo724 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•ˆ๋…•ํ•˜์„ธ์š” ๋ผํ‹ฐ! ๋น ๋ฅด๊ฒŒ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ํ•ด์ฃผ์…จ๋„ค์š”! ์ด๋ฒˆ์— ์ œ๊ฐ€ ๋˜์กŒ๋˜ ์งˆ๋ฌธ์— ๊ณ ๋ฏผ๋„ ํ•ด๋ณด์‹œ๊ณ  ์‹ค์ œ๋กœ ๋ฐ˜์˜๋„ ์ž˜ ํ•ด๋ณด์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ์„ค๊ณ„ ์ด์œ ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ๋˜ ๊ทธ๊ฑธ ์„ค๋ช…ํ•˜๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ์„ค๊ณ„ ์—ญ๋Ÿ‰์„ ๊ธฐ๋ฅด๊ณ  ํ˜‘์—…ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋งŽ์€ ๋„์›€์ด ๋ ๊ฑฐ์—์š”! ํ™”์ดํŒ…์ž…๋‹ˆ๋‹ค!

์ด๋ฒˆ์— ์ปค๋ฉ˜ํŠธ๋กœ๋Š” ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜์‹  ํ ๋ถ€๋ถ„์— ๋‹ฌ์•˜๋Š”๋ฐ์š”, ์ œ๊ฐ€ ์ €๋ฒˆ์— ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ๋˜ ๋ถ€๋ถ„์€ List ๊ทธ ์ž์ฒด์˜ ๋ฌธ์ œ๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ๊ฐ™์€ ๊ฐ’์„ ์ฐพ๋Š”๋ฐ List๋ฅผ ๋‘ ๋ฒˆ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ์ด ๋ถ€๋ถ„ ์˜คํ•ด๊ฐ€ ์žˆ์—ˆ์„๊นŒ๋ด ๋‹ค์‹œ ์•Œ๋ ค๋“œ๋ ธ์–ด์š”! (์•„๋‹ˆ๋ผ๋ฉด ๋ฌด์‹œํ•ด์ฃผ์„ธ์š” ใ…Žใ…Ž) ๊ทธ๋ž˜์„œ ๊ธฐ์ค€์— Player๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋ฒ ํŒ…์ด ๊ฐ€๋Šฅํ•œ์ง€, ํ”Œ๋ ˆ์ด๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ๋ฌผ์–ด๋ณด๋Š” ๋กœ์ง์€ ์ž์—ฐ์Šค๋Ÿฌ์› ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๋‚ด๋ถ€์ ์œผ๋กœ ๋‘ ๊ฐœ์˜ ํ๋ฅผ ์ถ”๊ฐ€๋กœ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ์˜ค๋Š” ๋น„์šฉ์ด ๋” ํด ๊ฒƒ ๊ฐ™์€๋ฐ์š”, ์ด ๋ถ€๋ถ„ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?!

์ถ”๊ฐ€๋กœ ์ปค๋ฉ˜ํŠธ ๋‹จ ๋ถ€๋ถ„๋„ ํ™•์ธํ•ด์ฃผ์‹œ๊ณ  ๋‹ค์‹œ ์š”์ฒญ ๋ณด๋‚ด์ฃผ์„ธ์š”~

Comment on lines +38 to +43
while (true) {
Optional<Player> player = game.whoseBettingTurn();
if (player.isEmpty()) {
break;
}
Player currentPlayer = player.get();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ใ…Žใ…Ž ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ์ž˜ ํ•˜์…จ๋„ค์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„ฑ๋Šฅ ์ด์Šˆ๋„, ๋™์‹œ์„ฑ ์ด์œ ๋„ ์—†๊ฒ ์ฃ ? ์ œ๊ฐ€ ์ข€ ์ด ๋ถ€๋ถ„์„ ์‹ ๊ฒฝ ์“ด ๋ถ€๋ถ„์€ ํ˜„์žฌ ๋ฏธ์…˜์—์„œ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ๋‚˜์ค‘์— ๋ฏธ์…˜ + ์›น ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Ÿฐ ๋ถ€๋ถ„์€ ์‰ฝ๊ฒŒ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์ด๋‹ค๋ณด๋‹ˆ ํ…Œ์ŠคํŠธ๋กœ๋„ ์•ˆ์žกํžˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ ์ €๋Ÿฐ ๋ถ€๋ถ„์€ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ณ ๋ฏผ ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Comment on lines +20 to +21
private final Queue<String> notBettingPlayers;
private final Queue<String> playablePlayers;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•„ ์ด๋ ‡๊ฒŒ ํ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๊ผˆ๊ตฐ์š”.. ์ „์— ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ์ƒํƒœ๋ฅผ ๋ฌผ์–ด๋ณด๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‹ค์Œ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์ด์˜€๋˜๊ฒƒ ๊ฐ™์€๋ฐ ๋งž๋‚˜์š”? ๊ทธ ๋ถ€๋ถ„์€ ๊ดœ์ฐฎ์•˜๋Š”๋ฐ ํ˜น์‹œ ์ด๋ ‡๊ฒŒ ํ๋กœ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ๊ตฌ์ฒด์ ์ธ ์ด์œ ๊ฐ€ ์žˆ์„๊นŒ์š”? ์ œ ๊ธฐ์ค€์—์„œ๋Š” players๊ฐ€ ์ด๋ฏธ ๊ฐ–๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋˜ ๊ด€๋ฆฌํ•˜๋Š” ๋А๋‚Œ์ด๊ณ  ์ฝ”๋“œ๊ฐ€ ๊ทธ ๋งŒํผ ๋ณต์žกํ•ด ์ง„ ๊ฒƒ ๊ฐ™์•„์š” ใ… 

Comment on lines +85 to +89
// public Optional<Player> findNotBetPlayer() {
// return players.values().stream()
// .filter(player -> !player.isBet())
// .findFirst();
// }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•ˆ์“ฐ๋Š” ์ฝ”๋“œ๋Š” ๊ผญ ์ง€์›Œ์ฃผ์„ธ์š”!

Comment on lines +21 to +25
public int readBetAmountValue() {
int betValue = sc.nextInt();
sc.nextLine();
return betValue;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•„๋งˆ๋„ BetAmount์˜ ๊ฒ€์ฆ ์œ„์น˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ์‹์€ InputView์—์„œ BetAmount๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ์š”, BetAmount์˜ ๊ฒฝ์šฐ ๋”ฑํžˆ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์žˆ๊ณ , ๋˜ํ•œ int๊ฐ’์ด BetAmount๋กœ๋งŒ ์‚ฌ์šฉ ๋˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ๊ดœ์ฐฎ์ง€ ์•Š์„๊นŒ์š”?

Comment on lines 25 to 32
public Dealer addCard(Supplier<Card> cardSupplier) {
GameState newGameState = gameState.hit(cardSupplier);
return Dealer.from(newGameState);
if (gameState.getCardsSum() <= DEALER_CARD_SUM_MIN) {
GameState newGameState = gameState.hit(cardSupplier);
return Dealer.from(newGameState);
}
GameState stayGameState = gameState.stay();
return Dealer.from(stayGameState);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ทธ๋ ‡๊ตฐ์š”! ์„ค๊ณ„์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ด์œ ์™€ ๊ณ ๋ฏผ์ด ์žˆ๋‹ค๋ฉด, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฑธ ๋ง๋กœ ์ž˜ ์„ค๋“ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ €๋Š” ์ž˜ ์„ค๊ณ„ ํ•˜์…จ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์„ ํƒํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ๋Š” ์žฅ๋‹จ์ ๊ณผ ์ƒํ™ฉ ๊ณ ๋ ค๋ฅผ ์ž˜ ํ•ด๋ณด์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants