๋ฌธ์ ์ค๋ช
๋ฌธ์ ํ์ด
0์ ๊ธฐ์ค์ผ๋ก P๋ฅผ ํ์ ํ๋ค. 0P0, 0P, P0, P ํํ ๋ชจ๋ ๊ฐ๋ฅ
์ฆ, 211020101011์ด ์์ผ๋ฉด 0์ ๊ธฐ์ค์ผ๋ก ์๋ผ์ฃผ๋ฉด ๋๋ค.
-> 211, 2, 1, 1, 11
๊ทธ ํ ์ซ์๋ค์ ์์์ธ์ง ์๋์ง ํ๋ณํด์ฃผ๋ฉด ๋๋ค.
๋ค๋ง ์ด ๋ฌธ์ ์ ํต์ฌ์ ์๊ฐ ๋ณต์ก๋์ด๋ค.
์์๋ฅผ ๊ตฌํ ๋ 36์ด๋ฉด 1~36๋ชจ๋ ๋๋ ค์ ๋๋จธ์ง๊ฐ 0์ธ๊ฑธ ์ฐพ์ผ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
36์ ์ฝ์๋ฅผ ๋ณด๋ฉด
2 4 6 9 18
36์ ์ ๊ณฑ๊ทผ์ธ 6์ ๊ธฐ์ค์ผ๋ก ์ง์ ์ด๋ฃฌ๋ค.
๋ฐ๋ผ์ n์ ์ ๊ณฑ๊ทผ๊น์ง๋ง for๋ฌธ์ ๋๋ ค์ค๋ ์์์ธ์ง ์๋์ง ํ๋ณ ๊ฐ๋ฅํ๋ค.
์ฝ๋
func solution(_ n:Int, _ k:Int) -> Int {
func isPrime(_ num: Int) -> Bool {
if num < 2 {
return false
}
if num == 2 || num == 3 {
return true
}
// ์ ๊ณฑ๊ทผ๊น์ง๋ง ๊ฒ์ฌํด๋ ์์์ธ์ง ํ๋ณ ๊ฐ๋ฅ
let s = Int(sqrt(Double(num)))
for i in 2...s {
if num % i == 0 {
return false
}
}
return true
}
// k์ง์๋ก ๋ณํ (String(n, radix: ))
let num = String(n, radix: k)
// 0์ ๊ธฐ์ค์ผ๋ก ์ซ์๋ฅผ ๋๋
let nums = num.split(separator: "0").map {Int(String($0))!}
var answer = 0
for n in nums {
if isPrime(n) {
answer += 1
}
}
return answer
}
ํ๊ธฐ
ํ์ด์๊ฐ: 35๋ถ
1.
ํ ์คํธ์ผ์ด์ค 1๋ฒ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค. ์์ ๊ตฌํ๋ ๋ก์ง์์ ํด๊ฒฐํ๋ ค๋ค๊ฐ ๊ฒฐ๊ตญ ํํธ๋ฅผ ๋ณด๊ณ .. ์ ๊ณฑ๊ทผ์ ์ด์ฉํด ์์๋ฅผ ๊ตฌํด ํด๊ฒฐ
์๋ง ํํธ ์์ผ๋ฉด ์๊ฐ ๋ชปํ์ ๊ฒ ๊ฐ๋ค..๐ซ
์์ ๊ตฌํ๋ ๊ฑด ์ธ์๋๋๊ฒ ๋์๋ฏ
2.
์ธ์ธ ํจ์๋ค
k์ง์ ๋ณํ
ex) 10์ 2์ง์๋ก ๋ณํ
String(10, radix: 2)
์ ๊ณฑ๊ทผ ๊ตฌํ๊ธฐ
sqrt(36)
-> 6
์ ๊ณฑ ๊ตฌํ๊ธฐ
pow(3, 2)
-> 9
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค 92342] ์๊ถ ๋ํ swift (1) | 2023.11.08 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค 92341] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ swift (1) | 2023.11.03 |
[ํ๋ก๊ทธ๋๋จธ์ค 150370] ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ swift (1) | 2023.10.28 |
[ํ๋ก๊ทธ๋๋จธ์ค 150369] ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ swift (0) | 2023.10.28 |
[ํ๋ก๊ทธ๋๋จธ์ค 150368] ์ด๋ชจํฐ์ฝ ํ ์ธํ์ฌ swift (1) | 2023.10.25 |