문제
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.
어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다.
출력
첫째 줄에 조건을 만족하는 수를 출력한다.
예제 입력 1
31
예제 출력 1
101
문제풀이
- 팰린드롬 == 123321, 가나다나가 등 뒤집어도 같은 수
- 소수를 판별하는 함수를 만들어 둔다.(isPrime)
- 입력한 숫자부터 1000000까지 팰린드롬 수를 찾는다.
- 만약 n이 커서 출력이 10000000이 넘는 경우가 생길 수 있다.
- 반복문을 다 도는 동안 result에 답이 없다면 가장 작은 소수중 팰린드롬인 1003001을 출력한다.
import sys
n = int(sys.stdin.readline().rstrip())
result = 0
#소수인지 판별하는 함수
def isPrime(x):
for i in range(2, int((x**0.5)+1)):
if x % i == 0:
return False
return True
for i in range(n, 1000001):
if i == 1:
continue
if str(i) == str(i)[::-1] and isPrime(i):
result = i
break
if result == 0:
result = 1003001
print(result)
문제의 쉼표(,)를 두 숫자로 쪼개어 봤었다.
79와 197인줄.. 올라온 질문을 보니 세상에 나랑 같은 생각을 한사람은 반드시 있다.
'코딩테스트 연습 > 백준 Boj' 카테고리의 다른 글
[Python] 백준 9465번 (스티커) (1) | 2021.11.21 |
---|---|
[Python] 백준 18234번 (당근 훔쳐 먹기) (0) | 2021.11.18 |
[Python] 백준 (분산처리) 1009번 (0) | 2021.11.02 |
[Python] 백준 (LCS 최장 공통 부분 수열) 9251번 (0) | 2021.11.01 |
[Python] 백준 (바이러스) (0) | 2021.10.27 |
댓글