๐ ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ๋งํฌ
โ๐ป ๋ฌธ์ ํ์ด Github ๋งํฌ
๋ฌธ์ ์ค๋ช
์์ ์ ์ n์ด ์ฃผ์ด์ง๋๋ค. ์ด ์ซ์๋ฅผ k์ง์๋ก ๋ฐ๊ฟจ์ ๋, ๋ณํ๋ ์ ์์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ์์(Prime number)๊ฐ ๋ช ๊ฐ์ธ์ง ์์๋ณด๋ ค ํฉ๋๋ค.
- 0P0์ฒ๋ผ ์์ ์์ชฝ์ 0์ด ์๋ ๊ฒฝ์ฐ
- P0์ฒ๋ผ ์์ ์ค๋ฅธ์ชฝ์๋ง 0์ด ์๊ณ ์ผ์ชฝ์๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ
- 0P์ฒ๋ผ ์์ ์ผ์ชฝ์๋ง 0์ด ์๊ณ ์ค๋ฅธ์ชฝ์๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ
- P์ฒ๋ผ ์์ ์์ชฝ์ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ
- ๋จ, P๋ ๊ฐ ์๋ฆฟ์์ 0์ ํฌํจํ์ง ์๋ ์์์
๋๋ค.
- ์๋ฅผ ๋ค์ด, 101์ P๊ฐ ๋ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, 437674์ 3์ง์๋ก ๋ฐ๊พธ๋ฉด 211020101011์ ๋๋ค. ์ฌ๊ธฐ์ ์ฐพ์ ์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ์์๋ ์ผ์ชฝ๋ถํฐ ์์๋๋ก 211, 2, 11์ด ์์ผ๋ฉฐ, ์ด 3๊ฐ์ ๋๋ค. (211, 2, 11์ k์ง๋ฒ์ผ๋ก ๋ณด์์ ๋๊ฐ ์๋, 10์ง๋ฒ์ผ๋ก ๋ณด์์ ๋ ์์์ฌ์ผ ํ๋ค๋ ์ ์ ์ฃผ์ํฉ๋๋ค.) 211์ P0 ํํ์์ ์ฐพ์ ์ ์์ผ๋ฉฐ, 2๋ 0P0์์, 11์ 0P์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ ์ n๊ณผ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. n์ k์ง์๋ก ๋ฐ๊ฟจ์ ๋, ๋ณํ๋ ์ ์์์ ์ฐพ์ ์ ์๋ ์ ์กฐ๊ฑด์ ๋ง๋ ์์์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
- 1 ≤ n ≤ 1,000,000
- 3 ≤ k ≤ 10
์ ์ถ๋ ฅ ์
n | k | result |
437674 | 3 | 3 |
110011 | 10 | 2 |
๋ฌธ์ ํ์ด
๋์ ํ์ด
import Foundation
func solution(_ n:Int, _ k:Int) -> Int {
var count = 0
for i in String(n, radix: k).split(separator: "0") {
if Int(i)! != 1 {
if isPrime(n: Int(i)!) {
count += 1
}
}
}
return count
}
func isPrime(n: Int) -> Bool {
for i in 2...Int(sqrt(Double(n)))+1 {
if n % i == 0 && i != n {
return false
}
}
return true
}
ํ์ฌ์ ๊ฐ์ radix๋ฅผ ํ์ฉํ์ฌ k์ง๋ฒ์ผ๋ก ๋ฐ๊พผ๋ค ๋ฌธ์์ด์ 0์ผ๋ก ๋ถ๋ฆฌํ์ฌ 1์ด ์๋ ๊ฐ๋ง์ ์์์ธ์ง ์๋์ง๋ฅผ ํ๋จํด์ฃผ๋ ํจ์์ ๋ฃ์ด์ ๊ฐ์ ๋ฐํํ๋ค.
์ค์ํ ๊ฐ๋
- ๋ฌธ์์ด์ ํน์ ๋ฌธ์๋ก ๋๋๋ ๋ฐฉ๋ฒ
- components(separatedBy: ๋ฌธ์)
- split(separator: ๋ฌธ์)
- ์ญ์ง๋ฒ์ n์ง๋ฒ์ผ๋ก ๋ฐ๊พธ๋ ํจ์
- String(๋ฐ๊พธ๋ ค๋ Int๊ฐ, radix: n)