iOS ์•ฑ ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜/TIL

3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ ์‹ฌํ™”_๊ฐœ์ธ๊ณผ์ œ_์•ผ๊ตฌ๊ฒŒ์ž„๋งŒ๋“ค๊ธฐ(Lv1~2)

yeggrrr๐Ÿผ 2024. 3. 15. 20:30
728x90

์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ

<ํ•„์ˆ˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ>

<์„ ํƒ ๊ตฌํ˜„ ๊ธฐ๋Šฅ>



์ด๋ฒˆ ๊ณผ์ œ๋Š” ํ•„์ˆ˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ Lv1~2
์„ ํƒ ๊ตฌํ˜„ ๊ธฐ๋Šฅ Lv3~6์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์—ˆ๋‹ค.


Lv1์€ ๋žœ๋ค ์ˆซ์ž ๋ฝ‘๊ธฐ

Lv2๋Š” ๋žœ๋ค์œผ๋กœ ๋ฝ‘ํžŒ ์ˆซ์ž์™€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’(readLine() ํ•จ์ˆ˜ ์‚ฌ์šฉ)์„ ๋น„๊ตํ•˜์—ฌ
์ŠคํŠธ๋ผ์ดํฌ, ๋ณผ๋กœ ํžŒํŠธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋งŒ๋“ค๊ธฐ

Lv3๋Š” 1~9๊ฐ€ ์•„๋‹Œ 0๋„ ํฌํ•จํ•˜์—ฌ ๋žœ๋ค ์ˆซ์ž๋ฅผ ๋ฝ‘๋„๋ก ๋ณ€๊ฒฝํ•˜๊ณ ,
๊ฐ€์žฅ ์•ž์ž๋ฆฌ์— 0์ด ์˜ค์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ

Lv4๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์•ˆ๋‚ด ๋ฌธ๊ตฌ๋ฅผ ๋„์šฐ๊ณ ,
1๋ฒˆ(๊ฒŒ์ž„ ์‹œ์ž‘)์„ ๋ˆŒ๋ €์„ ๋•Œ ์•ž์„œ ๋งŒ๋“  ๊ฒŒ์ž„์ด ์‹คํ–‰๋˜๋„๋ก ํ•˜๊ธฐ

Lv5๋Š” 2๋ฒˆ(๊ฒŒ์ž„ ๊ธฐ๋ก ๋ณด๊ธฐ)์„ ๋ˆŒ๋ €์„ ๋•Œ,
์ง„ํ–‰ํ–ˆ๋˜ ๊ฒŒ์ž„ ๊ธฐ๋ก์ด ๋‚˜์˜ค๋„๋ก ๋งŒ๋“ค๊ธฐ


Lv6์€ 3๋ฒˆ(๊ฒŒ์ž„ ์ข…๋ฃŒ)์„ ๋ˆŒ๋ €์„ ๋•Œ,
๊ธฐ๋ก์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ


์ด๋ ‡๊ฒŒ 6๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ๊ณ , ๋ชฉํ‘œ๋Š” ํ•„์ˆ˜ ๊ตฌํ˜„๊นŒ์ง€ ์™„์„ฑํ•˜๊ธฐ ์˜€์ง€๋งŒ,
์—ฌ๋Ÿฌ ๋„์›€๋“ค์„ ๋ฐ›์•„ 6๋ ˆ๋ฒจ๊นŒ์ง€ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜์—ฌ ์ œ์ถœํ–ˆ๋‹ค!
์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์งˆ์ˆ˜๋ก ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ๋ผ์„œ ๊ธฐ๋Šฅ์ด ์ง„ํ–‰๋˜๋Š”์ง€
์˜ค๋ž˜๋„๋ก ๋ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด
๋ถˆํ•„์š”ํ•œ ์ฃผ์„๊นŒ์ง€๋„ ์šฐ์„  ๋‚จ๊ฒจ๊ฐ€๋ฉฐ ๋งŒ๋“ค์—ˆ๋‹ค.
์ด๋ฒˆ ๊ณผ์ œ๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฐ˜๋ณต๋ฌธ(while๋ฌธ, for๋ฌธ)๊ณผ ์กฐ๊ฑด๋ฌธ(if-else)์„ ํ™œ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ
์ด์ „๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ์น˜๋Š”๋ฐ ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ๋˜์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
๊ทธ๋ฆฌ๊ณ  readLine() ํ•จ์ˆ˜์™€ random(in:) ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ ์•Œ๊ฒŒ๋˜์–ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์•„๋ž˜์— ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ–ˆ๋˜ ๋‚ด์šฉ์„ ๊ฐ„๋‹จ(?)ํ•˜๊ฒŒ ๋‚จ๊ธฐ๋ ค๊ณ  ํ•œ๋‹ค.
(์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š”  Lv1~2) 
์ž์„ธํ•œ ์ฝ”๋“œ ๋‚ด์šฉ์€ github์— ์˜ฌ๋ ค๋†“์•˜๋‹ค.
(https://github.com/yeggrrr)

(Lv3~6, ๊ณผ์ œ ํ•ด์„ค ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ๋А๋‚€์ ๊ณผ ๋‚ด๊ฐ€ ํ•œ ํ’€์ด์™€ ์–ด๋–ค ์ ์ด ๋‹ค๋ฅธ์ง€,
๋˜ ๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ๊ณผ ์ •๋ฆฌ๋Š” 17์ผ(์ผ์š”์ผ)์— ์—…๋กœ๋“œํ•  ๊ณ„ํš์ด๋‹ค.)



Lv1

๋žœ๋ค ์ˆซ์ž๋ฅผ ๋ฝ‘์•˜์„ ๋•Œ, ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก
๋žœ๋ค ์ˆซ์ž๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ, Set์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

3์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ๋ชจ๋‘ ๋ฝ‘ํž ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ์•„์•ผํ•ด์„œ while๋ฌธ์„ ์‚ฌ์šฉํ•ด์คฌ๊ณ ,
Lv1์—์„œ์˜ ์ˆซ์ž ๋ฒ”์œ„๋Š” 1์—์„œ 9๊นŒ์ง€์˜€๋‹ค.
(Lv3์—์„œ ๋ฒ”์œ„๊ฐ€ 0์—์„œ 9๊นŒ์ง€๋กœ ๋ณ€๊ฒฝ๋จ.)

๊ทธ๋ฆฌ๊ณ  ๋‚˜์ค‘์— ๊ฐ ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•ด์„œ strike์™€ ball์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„œ
๋ฝ‘ํžŒ ๋žœ๋ค ์ˆซ์ž๋ฅผ Array๋กœ ๊ฐ์‹ธ Int ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์คฌ๋‹ค.


Lv2

๋žœ๋ค ์ˆซ์ž(=์ •๋‹ต)๊ณผ ๋น„๊ตํ•  ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— readLine() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ •๋‹ต์„ ๋งž์ถœ๋•Œ๊นŒ์ง€ ๊ณ„์† ์ž…๋ ฅ์„ ๋ฐ›์•„์•ผํ•˜๋ฏ€๋กœ while๋ฌธ ์†์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.
(var isRunning = true๋กœ ์„ค์ •ํ•ด์„œ ๊ณ„์† ๋Œ๋„๋ก ๋งŒ๋“ฌ.)

์—ฌ๊ธฐ์„œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค.
์‹คํ–‰์‹œ์ผœ์„œ ์ž…๋ ฅ๊ฐ’์„ ๋„ฃ์—ˆ๋”๋‹ˆ ๊ณ„์† ์˜ต์…”๋„๋กœ ๋‚˜์™”๋‹ค.
์•Œ๊ณ ๋ณด๋‹ˆ readLine() ํ•จ์ˆ˜๋Š” ๋ฆฌํ„ด๊ฐ’์ด '์˜ต์…”๋„ ๋ฌธ์ž์—ด'์ด์—ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์˜ต์…”๋„ unwrapping์„ ํ•ด์ฃผ์—ˆ๋‹ค.
๋‚˜๋Š” ์ผ๋‹จ !๋ฅผ ๋ถ™์—ฌ ๊ฐ•์ œ๋กœ ์˜ต์…”๋„์„ ๋ฒ—๊ฒจ์ฃผ์—ˆ๋‹ค.
(์–ด์ฐจํ”ผ ๋‚˜์ค‘์— if ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ž˜๋ชป๋œ ์ž…๋ ฅ๊ฐ’์„ ๊ฑธ๋Ÿฌ์ค„ ์˜ˆ์ •)

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ’์„ userInputNums์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.
(readLine()์œผ๋กœ ๋ฐ›์€ ์ž…๋ ฅ๊ฐ’ = userInputNums)



strike์™€ ball์„ ์•Œ์•„๋‚ด๋Š” chkStrikeAndBall ํ•จ์ˆ˜ ์ƒ์„ฑ.

Int(userInputNums) == nil
→ userInputNums๊ฐ€ Int๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ž…๋ ฅ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค๋Š” ๋œป

์ด์™ธ์—๋„ ๊ณผ์ œ Lv2์— ์š”๊ตฌํ–ˆ๋˜
3์ž๋ฆฌ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, 0์„ ํฌํ•จํ•œ ๊ฒฝ์šฐ, ํŠน์ • ์ˆซ์ž๋ฅผ ์ค‘๋ณต ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋ฅผ
||(or)๋กœ ์—ฐ๊ฒฐํ•ด if ์กฐ๊ฑด์— ๋„ฃ์–ด true๋ผ๋ฉด "์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์ž…๋ ฅ๊ฐ’์ž…๋‹ˆ๋‹ค." ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ค๋„๋ก ํ–ˆ๋‹ค.

๊ทธ ์ด์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” ์ž…๋ ฅ๊ฐ’์„ 'Character→String→Int' ์ˆœ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ num์— ๋„ฃ์–ด์ฃผ์—ˆ๊ณ ,
guard๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€ํ™˜์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ์— ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ "__"์œ„์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ค๋„๋ก ํ–ˆ๋‹ค.
(Character์—์„œ ๋ฐ”๋กœ Int๋กœ ๋ณ€ํ™˜์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ)

๊ทธ๋ฆฌ๊ณ  ์•ž์„œ Int ๋ฐฐ์—ด๋กœ ์ €์žฅํ•œ ๋žœ๋ค ์ˆซ์ž์™€ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ™์€ ํƒ€์ž…์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
var inputNum: [Int] = []
์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์„ Int ๋ฐฐ์—ด๋กœ ๋งŒ๋“œ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ ,
append๋ฅผ ์‚ฌ์šฉํ•ด์„œ num์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  var isRunning = true๋กœ ์„ค์ •ํ•˜์—ฌ ๊ณ„์† ๋Œ๊ณ  ์žˆ๋Š” while๋ฌธ์ด ๋๋‚  ์ˆ˜ ์žˆ๋„๋ก
isRunning = anserNums != inputNums
์ž…๋ ฅ๊ฐ’๊ณผ ์ •๋‹ต์ด ๋‹ค๋ฅด๋‹ค๋ฉด? ๋ฐ˜๋Œ€๋กœ ์ƒ๊ฐํ•ด์„œ, ์ž…๋ ฅ๊ฐ’์ด ์ •๋‹ต๊ณผ ๊ฐ™๋‹ค๋ฉด? false๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์—
์ •๋‹ต์„ ๋งž์ถ˜ ์ˆœ๊ฐ„ while๋ฌธ์ด ๋๋‚˜๊ฒŒ ๋œ๋‹ค.


์ด์–ด์„œ strike์™€ ball์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์ˆซ์ž์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค.

 for๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ 0๋ถ€ํ„ฐ inputNums์˜ ๊ฐฏ์ˆ˜(=3 - 1)๊นŒ์ง€ ๋Œ๋ ค i ์— ๋„ฃ๊ณ ,
num์— inputNums์˜ i๋ฒˆ์งธ ์ˆ˜๋ฅผ, answer์— answerNums์˜ i๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋„ฃ๊ณ ,

num๊ณผ answer๊ฐ€ ๊ฐ™๋‹ค๋ฉด strikeCount์— 1์„ ๋”ํ•ด์ฃผ์—ˆ๋‹ค.
(= ๊ฐ™์€ ์ž๋ฆฌ, ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด)

๊ทธ๋ฆฌ๊ณ  answerNums์— num์— ์žˆ๋Š” ์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด, samNumCount์— 1์„ ๋”ํ•ด์ฃผ์—ˆ๋‹ค.
(= ์ž๋ฆฌ ์ƒ๊ด€์—†์ด ๊ฒน์น˜๋Š” ์ˆซ์ž๋Š” ๋ชจ๋‘ countํ•˜๊ธฐ)

๊ทธ๋Ÿผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ball์˜ ๊ฐฏ์ˆ˜๋Š” samNumCount - strikeCount๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค.

์ด์ œ count๋ฅผ ๋๋ƒˆ์œผ๋‹ˆ, ์•„๋ž˜์™€ ๊ฐ™์ด ์กฐ๊ฑด๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ์— ๋งž๋Š” ๋ฌธ๊ตฌ๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค!

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, Lv2๊นŒ์ง€ ๊ตฌํ˜„ ๋!!



๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€์— ์ด์–ด์„œ Lv3~6 ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค!
(2024.03.17 ์˜ˆ์ •)


์ฒซ๋‚ ์—๋Š” ๊ณผ์ œ ๋‚ด์šฉ๋งŒ ํ•œ์ฐธ ๋ณด๋ฉด์„œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ์ง€ ๋จธ๋ฆฌ์†์œผ๋กœ ๊ณ ๋ฏผ๋งŒ ํ–ˆ์—ˆ๋Š”๋ฐ,
์•„๋ฌด๋Ÿฐ ์ง„์ „์ด ์—†์—ˆ๋‹คใ…œใ…œ..
๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์ผ๋‹จ ์ฃผ์„์œผ๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ์ ์–ด๋†“๊ณ ,
ํ•˜๋‚˜์”ฉ ์ณ๋ณด๋ฉด์„œ ์‹œ๋„ํ•ด ๋ณด๋ผ๋Š” ์šฐ๋ฆฌ ์กฐ ํŒ€์žฅ๋‹˜์˜ ์–˜๊ธฐ๊ฐ€ ์ƒ๊ฐ๋‚˜์„œ ๋„์ ์ด๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ๋‹ค.๐Ÿฅน
6๋‹จ๊ณ„ ์ค‘์—์„œ Lv2๊ฐ€ ๊ฐ€์žฅ ๋ฉ”์ธ์ด๋ฉด์„œ ์ƒ๊ฐํ•  ๊ฒƒ๋“ค์ด ๋งŽ์•„ ์–ด๋ ค์›€๋„ ์žˆ์—ˆ์ง€๋งŒ,
'์ด ๊ณผ์ •๋“ค์ด ๋ผˆ๊ฐ€ ๋˜๊ณ  ์‚ด์ด ๋˜๊ฒ ์ง€....'๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ ๋ˆˆ๋ฌผ ๋จธ๊ธˆ๊ณ  ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์ด์ „์—๋„ ๋งํ–ˆ์ง€๋งŒใ…‹ใ…‹ใ…‹ใ…‹ใ…‹... ๋‚˜์ค‘์— ์ด ๊ณผ์ œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋‹ค์‹œ ๋ดค์„ ๋•Œ,
'์ด ์‰ฌ์šด๊ฑธ ์™œ ์–ด๋ ค์›Œํ–ˆ์ง€?'ํ•˜๋Š” ์ˆœ๊ฐ„์ด ๋นจ๋ฆฌ ์™”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.^0^

_feat. (์ƒˆ์‚ผ..'๋‚œ ์ด๊ฑฐ ๋ˆˆ๊ฐ๊ณ ๋„ ํ’€์–ด~'๋ผ๊ณ  ๋งํ–ˆ๋˜ ์šฐ๋ฆฌ keen๋‹˜์ด ๋งค์šฐ ์กด๊ฒฝ์Šค๋Ÿฌ์›€..๐Ÿคฃ๐Ÿ˜‚)



 

728x90