아이디어
바로 이전에 K번째 소수를 풀고 푼 문제이기 때문에 자연스럽게 에라토스테네스의 체를 이용하였다. N보다 넉넉하게 큰 수를 설정하고 그만큼 소수를 찾아 놓은 후, N보다 큰 소수를 찾아 String으로 만든 후 팰린드롬 여부를 판단하였다. 문자열로 만들면 뒤로 뒤집어서 확인해도 팰린드롬인지 확인이 가능하므로 이를 이용하여 풀었다.
에라토스테네스의 체의 경우 위의 링크를 참조하시길..
해답
let N = Int(readLine()!)!
var num = 3_000_000
var numArray = Array(repeating: 0, count: num + 1)
var cnt = 0
func isPalindrome (_ num: Int ) -> Bool {
let str = String(num)
return str == String(str.reversed())
}
for i in 2...num {
numArray[i] = i
}
for i in 2...num {
if numArray[i] == 0 {
continue
}
for j in stride(from: i+i, through: num, by: i) {
numArray[j] = 0;
}
}
for i in N...num {
if numArray[i] != 0 {
if isPalindrome(i) {
print(i)
break
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
[백준 스위프트] 1697번 숨박꼭질 (0) | 2022.09.12 |
---|---|
[백준 스위프트] 6219번 소수의 자격 (0) | 2022.08.30 |
[백준 스위프트] 15965번 K번째 소수 (0) | 2022.08.30 |
[백준 스위프트] 1302번 베스트셀러 (0) | 2022.08.24 |
[백준 스위프트] 9375번 패션왕 신해빈 (0) | 2022.08.24 |