2022. 10. 18. 11:51ใํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - n์ง์ ๊ฒ์(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/17687
๋์ ํ์ด
๋ฌธ์ ๋ฅผ ํ ๋ "ํ์ฌ์ turn์ ์ฌ๋์ ์ซ์๋ก ๋๋ ์ ๋จ์ด์ง๋ ๋๋จธ์ง๊ฐ ์์์ ๊ฐ๋ค๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ๋ฃ๋๋ค"๋ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๋๋ฐ๋ ์ค๋๊ฑธ๋ฆฌ์ง ์์์ง๋ง, ์ฌ๋์ ์์์ ์ฌ๋ ์๊ฐ ๊ฐ์ ๋๋ ๋๋จธ์ง๊ฐ 0์ธ ๊ฒฝ์ฐ์ง๋ง ๊ฐ์ ๋ฃ์ด์ค์ผํ๊ธฐ ๋๋ฌธ์ else if๋ก ๋นผ๋ ๋ก์ง์ ์๊ฐํ๋๋ฐ๋ ์กฐ๊ธ ์ค๋๊ฑธ๋ ธ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ฝ๋๋ ๋ง์ง๋ง ์ค์ return ""๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ์ง ๋ชจ๋ฅด๊ฒ ์ข์ง ์์ ์ฝ๋๋ผ๋ ๋๋์ด ์จ๋ค.
๊ทธ๋์ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ดํด๋ดค๋ค.
func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String {
var turn = 1
var ans = ""
let arr = (0..<t*m).map{ String($0, radix: n).uppercased() }
for x in arr {
for j in x {
if turn % m == p {
ans.append(j)
if ans.count == t {
return ans
}
} else if p == m && turn % p == 0 {
ans.append(j)
if ans.count == t {
return ans
}
}
turn += 1
}
}
return ""
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด
๋ด ์ฝ๋์ ๋น๊ตํด ๋ดค์ ๋ ํจ์ฌ ํจ์จ์ ์ด๊ณ ์ง๊ด์ ์ด๋ค.
๋๋ ์์ฌ๊ฐ๋ answer์ ์นด์ดํธ๊ฐ m*t์ธ count๋ณด๋ค ์์๋ ๊น์ง while๋ฌธ์ ์ํํ๋ ๋ฐฉ๋ฒ์ด ์๋, answer.count == t๊ฐ ๋์์ ๋ ๋ฆฌํด์ ํ๋ค. ์ฆ ํด๋นํ๋ ๊ฐ๋ง์ answer์ ๋ฃ์๊ณ ์๋ ํ์ด์ ์ฌ๋์ ๋จผ์ ์ธ์์๋งํผ answer์ ์ถ๊ฐ๋ฅผ ํด์ค ๋ค stride๋ฅผ ํตํด ์์์ ํด๋นํ๋ ๊ฐ๋ง์ ์ถ์ถํ๊ณ , reduceํด์ ํ์ด๋ฅผ ํ๋ค.
func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String {
var ans:[String] = []
let count = m*t
var number = 0
while ans.count < count {
ans += String(number, radix: n).map{ $0.uppercased() }
number += 1
}
return stride(from: p-1, to: count, by: m).reduce("", {$0 + ans[$1]})
}
ํผ๋๋ฐฑ
stride๋ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. (๋จ map์ด๋ reduce์ฒ๋ผ ํ ๋ณํ์ ํ์คํ๊ฒ ํ๊ณ ์ฌ์ฉํด์ผ ํ๋ค.)
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ ์ฆ4๋ธ๋ก(Swift) (0) | 2022.10.18 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ํผ๋ก๋(Swift) (0) | 2022.10.18 |
ํ๋ก๊ทธ๋๋จธ์ค - k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (0) | 2022.10.18 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ(Swift) (0) | 2022.10.18 |
ํ๋ก๊ทธ๋๋จธ์ค - ์์ถ(Swift) (0) | 2022.10.18 |