์ทจ๋ฝ€๊ธฐ์›

[์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค ๋ฐฑ์—”๋“œ 5๊ธฐ] ํ”„๋ฆฌ์ฝ”์Šค 2์ฃผ์ฐจ ํšŒ๊ณ 

KIMHYEYUN 2022. 11. 9. 15:56
๋ฐ˜์‘ํ˜•

๐Ÿฅ• ๋ฏธ์…˜ - ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„

๐Ÿš€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

๊ธฐ๋ณธ์ ์œผ๋กœ 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ 3์ž๋ฆฌ์˜ ์ˆ˜๋ฅผ ๋งž์ถ”๋Š” ๊ฒŒ์ž„์ด๋‹ค.

  • ๊ฐ™์€ ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ž๋ฆฌ์— ์žˆ์œผ๋ฉด ์ŠคํŠธ๋ผ์ดํฌ, ๋‹ค๋ฅธ ์ž๋ฆฌ์— ์žˆ์œผ๋ฉด ๋ณผ, ๊ฐ™์€ ์ˆ˜๊ฐ€ ์ „ํ˜€ ์—†์œผ๋ฉด ๋‚ซ์‹ฑ์ด๋ž€ ํžŒํŠธ๋ฅผ ์–ป๊ณ , ๊ทธ ํžŒํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋จผ์ € ์ƒ๋Œ€๋ฐฉ(์ปดํ“จํ„ฐ)์˜ ์ˆ˜๋ฅผ ๋งž์ถ”๋ฉด ์Šน๋ฆฌํ•œ๋‹ค.
    • ์˜ˆ) ์ƒ๋Œ€๋ฐฉ(์ปดํ“จํ„ฐ)์˜ ์ˆ˜๊ฐ€ 425์ผ ๋•Œ
      • 123์„ ์ œ์‹œํ•œ ๊ฒฝ์šฐ : 1์ŠคํŠธ๋ผ์ดํฌ
      • 456์„ ์ œ์‹œํ•œ ๊ฒฝ์šฐ : 1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ
      • 789๋ฅผ ์ œ์‹œํ•œ ๊ฒฝ์šฐ : ๋‚ซ์‹ฑ
  • ์œ„ ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์—์„œ ์ƒ๋Œ€๋ฐฉ์˜ ์—ญํ• ์„ ์ปดํ“จํ„ฐ๊ฐ€ ํ•œ๋‹ค. ์ปดํ“จํ„ฐ๋Š” 1์—์„œ 9๊นŒ์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์ž„์˜์˜ ์ˆ˜ 3๊ฐœ๋ฅผ ์„ ํƒํ•œ๋‹ค. ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ์ปดํ“จํ„ฐ๋Š” ์ž…๋ ฅํ•œ ์ˆซ์ž์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ์ด ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด ์ปดํ“จํ„ฐ๊ฐ€ ์„ ํƒํ•œ 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ๋‹ค.
  • ๊ฒŒ์ž„์„ ์ข…๋ฃŒํ•œ ํ›„ ๊ฒŒ์ž„์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ IllegalArgumentException์„ ๋ฐœ์ƒ์‹œํ‚จ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค.

๐ŸŽฏ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ

์ถ”๊ฐ€๋œ ์š”๊ตฌ ์‚ฌํ•ญ

  • indent(์ธ๋ดํŠธ, ๋“ค์—ฌ์“ฐ๊ธฐ) depth๋ฅผ 3์ด ๋„˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค. 2๊นŒ์ง€๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด while๋ฌธ ์•ˆ์— if๋ฌธ์ด ์žˆ์œผ๋ฉด ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” 2์ด๋‹ค.
    • ํžŒํŠธ: indent(์ธ๋ดํŠธ, ๋“ค์—ฌ์“ฐ๊ธฐ) depth๋ฅผ ์ค„์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์„œ๋“œ)๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.
  • 3ํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
  • ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์„œ๋“œ)๊ฐ€ ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜๋„๋ก ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ.
  • JUnit 5์™€ AssertJ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณธ์ธ์ด ์ •๋ฆฌํ•œ ๊ธฐ๋Šฅ ๋ชฉ๋ก์ด ์ •์ƒ ๋™์ž‘ํ•จ์„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ํ™•์ธํ•œ๋‹ค.
    • ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์‚ฌ์šฉ๋ฒ•์ด ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด test/java/study๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํ•™์Šตํ•œ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • camp.nextstep.edu.missionutils์—์„œ ์ œ๊ณตํ•˜๋Š” Randoms ๋ฐ Console API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
    • Random ๊ฐ’ ์ถ”์ถœ์€ camp.nextstep.edu.missionutils.Randoms์˜ pickNumberInRange()๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์€ camp.nextstep.edu.missionutils.Console์˜ readLine()์„ ํ™œ์šฉํ•œ๋‹ค.

https://github.com/kimhyeyun/java-baseball/tree/kimhyeyun

๐Ÿ™‹‍โ™€๏ธ ํ›„๊ธฐ

  • ์„ธ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ์ปดํ“จํ„ฐ ์ˆซ์ž(๋žœ๋ค)์™€ ์‚ฌ์šฉ์ž ์ˆซ์ž(์ž…๋ ฅ)์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ๊ณ , ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋‚ด์šฉ์ด ๋‹ฌ๋ผ์„œ ๊ทธ ๋ถ€๋ถ„์€ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  • indent๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ๊ฒŒ์ž„์—์„œ ์ •๋‹ต์„ ๋งž์ถœ ๋•Œ๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํ•œ ๋ผ์šด๋“œ๋ผ๊ณ  ๋ช…๋ช…ํ•˜๊ณ , ๊ตฌํ˜„์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ์—๋Š” private ๋ฉ”์„œ๋“œ(public ๋ฉ”์„œ๋“œ๋‚ด์—์„œ ํ˜ธ์ถœ๋˜๋Š”)๋„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ ์  ํ…Œ์ŠคํŠธํ•  ํ•„์š”์„ฑ์„ ๋А๋ผ์ง€ ๋ชปํ•˜๊ณ  ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค. → private์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” public์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ–ˆ์Œ, ๋˜ํ•œ, ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ…Œ์ŠคํŠธ ์‹œ, ํ•จ๊ป˜ ํ…Œ์ŠคํŠธ ๋˜๊ธฐ๋•Œ๋ฌธ์—
  • ์ž…๋ ฅ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ผ์„œ, ์ฒ˜์Œ์—๋Š” ๋ฉ”์„œ๋“œ๋‚ด์— ์ž…๋ ฅ ๋ถ€๋ถ„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ƒ์ˆ˜๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ์œผ๋‚˜, ์ถ”ํ›„ ๋ณ€๊ฒฝ ํ•™์Šตํ•จ
  • String input = "1234"; InputStream in = new ByteArrayInputStream(input.getBytes()); System.setIn(in);
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž…๋ ฅ์— input์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜์–ด์„œ, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋จ*

๋А๋‚Œ

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

์ด๋ฒˆ 3์ฃผ์ฐจ ๋ฏธ์…˜ ๋•Œ๋Š”, 2์ฃผ์ฐจ ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์ฒ˜๋Ÿผ,,

README.md๋ฅผ ์ƒ์„ธํžˆ ์ž‘์„ฑ

๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์žฌ๊ฒ€ํ† 

๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธ

๋ณ€์ˆ˜ ์ด๋ฆ„์— ์ž๋ฃŒํ˜•์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

ํ•จ์ˆ˜๊ฐ€ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ์ค€์„ ์„ธ์šด๋‹ค

์ฒ˜์Œ๋ถ€ํ„ฐ ํฐ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค

์„ ๋” ์‹ ๊ฒฝ์จ์„œ ์ง„ํ–‰ํ•ด์•ผ๊ฒ ๋‹ค.!!!๐Ÿ™

728x90
๋ฐ˜์‘ํ˜•