number_list = [True]*1003002
number_list[0] = False
number_list[1] = False
for number in range(2,1003002):
if number_list[number]:
for j in range(number+number,1003002,number):
number_list[j] = False
N = int(input())
flag = False
for find_number in range(N,1003002):
if number_list[find_number]:
string_number = str(find_number)
if len(string_number)%2:
if len(string_number) != 1:
a = string_number[:N//2]
b = string_number[N//2+1::-1]
if a == b:
result = find_number
break
else:
result = find_number
break
else:
a = string_number[:N//2]
b = string_number[N//2::-1]
if a == b:
result = find_number
break
print(result)
소수를 구한뒤 앞뒤로 같은지 확인해주면 되는 문제였다.
그리고 최대 입력값 100만일때 나오는 소수& 팰린드롬 수는 1003001 이므로 거기까지만 돌리면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 19606 Escape Room (0) | 2021.02.24 |
---|---|
[BOJ/백준] 7622 이중 우선순위 큐 (0) | 2021.02.23 |
[BOJ/백준] 1475 방 번호 (0) | 2021.02.23 |
[BOJ/백준] 1463 1로 만들기 (0) | 2021.02.23 |
[BOJ/백준] 1427 소트인사이드 (0) | 2021.02.23 |