2022. 2. 6. 16:05ใAlgorithm
๋ฌธ์ ๐ https://programmers.co.kr/learn/courses/30/lessons/17687
๋ฌธ์ ์ค๋ช
ํ๋ธ๊ฐ N์ง์ ๊ฒ์์ ํ๋๋ฐ ํ๋ธ ์์์ ๋งํด์ผ ํ๋ ์ซ์๋ค์ ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค.
๊ฒ์ ๊ท์น์ ๋ฌธ์ ์ ์์ธํ ๋์์์ต๋๋ค.
๋ฌธ์ ํ์ด
๋ชจ๋ ์ซ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ง string ๋ฐฐ์ด์ ๊ตฌํ๊ณ ๊ทธ ์ค์์ ํ๋ธ์ ์ฐจ๋ก์ ๋งํ ์ซ์๋ค์ ๋ฝ์์ผ ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์ ๋๊ฐ์ง๋ฅผ ์์์ผ ํฉ๋๋ค!!
1. N์ง์ ๋ณํ ๋ฐฉ๋ฒ
2. for๋ฌธ ๋๊ธฐ โ +1์ด ์๋๋ผ +n๋งํผ ๋์์ผ ํฉ๋๋ค. (ํ๋ธ์ ์์๋ +์ฌ๋์๋งํผ ๋์์ค๊ธฐ ๋๋ฌธ)
1๋ฒ์ swift์ radix ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. (ํญ์ ๊ตฌํํ์๋๋ฐ ์ค๋ ์ฒ์ ์ ใ ใ ,,)
๋ณํํ ์์ ์ง ์๋ฅผ ์ ํ๋ฉด ๋ฉ๋๋ค.
uppercase๋ optional ํ๋ผ๋ฏธํฐ์ธ๋ฐ 11์ง์์ด์๋ถํฐ ์ํ๋ฒณ์ผ๋ก ํํ๋๋ ์ซ์๋ค์ ๋์๋ฌธ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
let target: Int = 3
let n: Int = 2
let result = String(target, radix: n, uppercase: true)
print(result)
// 11
2๋ฒ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์๊ฐํ๋ฉด for๋ฌธ์ ๋๋ฉฐ ๋๋จธ์ง ์ฐ์ฐ์ ์ด์ฉํด์ ๊ตฌํ ์ ์์ต๋๋ค.
n, n+2, n+4, n+6 ์ผ ๊ฒฝ์ฐ
2๋ก ๋๋ ๋๋จธ์ง๋ก ํ๋จํ์ฌ ์ซ์๋ค์ ๋ฝ์ ์ ์์ต๋๋ค.
// ๋ฌธ์ ์ ํ์ด ์๋!!
for (i,num) in totalNumber.enumerated() {
if i % 2 == 1 {
result.append(num)
if result.count == t {
break
}
}
}
์ ๋ ์ด ํ์ด๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง๋ง ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ stride๋ผ๋ ๋ฉ์๋๋ฅผ ์๊ฒ ๋์์ต๋๋ค!!

stride(from: A, to: B, by: C) ๋ผ๊ณ ํ๋ฉด
A๋ถํฐ B๊น์ง C๋งํผ ๋ํ๋ฉด์ ๊ฐ๊ฑฐ์ผ! ๋ผ๋ ๋ป์ ๋๋ค.
์ด ๋ B๋ ํฌํจํ์ง ์๊ณ B-1 ๊น์ง ํฌํจํฉ๋๋ค.
for i in stride(from: 0, to: 10, by: 2) {
print(i)
}
// 0
// 2
// 4
// 6
// 8
์ฝ๋
๋๋จธ์ง ์ฐ์ฐ์ ์ด์ฉํ for๋ฌธ
func changeRadix(_ n: Int, _ target: Int) -> String {
return String(target, radix: n, uppercase: true)
}
func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String {
let total: Int = t * m
var totalNumber: String = ""
var result: String = ""
for i in 0..<total {
totalNumber.append(changeRadix(n, i))
}
for (i,num) in totalNumber.enumerated() {
if i % m == (p-1) {
result.append(num)
if result.count == t {
break
}
}
}
return result
}
stride ์ฐ์ฐ์ ์ด์ฉํ for๋ฌธ
func changeRadix(_ n: Int, _ target: Int) -> String {
return String(target, radix: n, uppercase: true)
}
func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String {
let total: Int = t * m
var totalNumber: String = ""
var result: String = ""
for i in 0..<total {
totalNumber.append(changeRadix(n, i))
}
for i in stride(from: (p-1), to: (p-1) + m * t, by: m) {
let index = totalNumber.index(totalNumber.startIndex, offsetBy: i)
result.append(totalNumber[index])
print(i)
}
return result
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] string radix initializer (1) | 2022.09.22 |
---|---|
[Programmers] ์์ฅ (0) | 2022.03.30 |
[Programmers] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ (0) | 2022.02.04 |
[Programmers] 1์ฐจ ์ถ์ ํธ๋ํฝ (0) | 2022.02.03 |
[Programmers] ๋ฌธ์์ด ์์ถ (0) | 2022.02.01 |