반응형
문제 설명
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이
팰린드롬 수이다.
어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.
풀이 과정
소수란 1과 자기자신을 제외한 수로는 나누어 떨어지지 않는 수를 말하는데,
이 소수를 구하는 방법에는 대표적으로 세가지가 있다.
① i를 2부터 n-1까지 돌면서 i로 나누어 떨어지는 경우가 존재하지 않으면 소수
② i를 2부터 루트n까지 돌면서 i로 나누어 떨어지는 경우가 존재하지 않으면 소수
③ 에라토스테네스의 체
①번과 ②번의 경우에는, 명확하게 ②번의 경우의 범위가 더 좁기 때문에 더 빠른것이 명확하다.
③에라토스테네스의 체 의 경우에는 구하는 방법을 미리 알고있어야 하기 때문에 이 문제에서는 ②를 이용하여 풀었다.
펠린드롬의 경우에는 문자열을 그대로 뒤집어서 일치하면 True 처리를 해주었다.
import math
n = int(input())
def isPrime(x):
if x == 1:
return False
for i in range(2, int(math.sqrt(x)+1)):
if x % i == 0:
return False
return True
def isPalindrome(x):
xs = str(x)
xsr = xs[::-1]
if xs == xsr:
return True
else:
return False
start = n
while True:
if isPalindrome(start) and isPrime(start):
print(start)
break
else:
start+=1
전체 문제 & 코드는 위의 깃에 정리되어 있습니다.
팔로우 & 맞팔은 환영입니다 !
반응형
'Algorithm > Implementation' 카테고리의 다른 글
[백준] 1431 시리얼 번호 (Python 파이썬) (0) | 2021.04.27 |
---|---|
[백준] 9375 패션왕 신해빈 (Python 파이썬) (1) | 2021.04.27 |
[백준] 5525 IOIOI (Python 파이썬) (3) | 2021.04.26 |
[프로그래머스] 불량 사용자 ( Python 파이썬 ) (0) | 2021.04.22 |
[백준] 2869번 달팽이는 올라가고 싶다 (Python 파이썬) (0) | 2021.04.12 |