Algorithm/Math
수학(유형정리) - 백준 1747
Hyeon Lee
2023. 6. 29. 09:43
728x90
1747번: 소수&팰린드롬
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,
www.acmicpc.net
문제
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.
어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다.
출력
첫째 줄에 조건을 만족하는 수를 출력한다.
예제 입력 1 복사
31
예제 출력 1 복사
101
문제가 생각보다 단순하다. 그냥 펠린드롬과 소수를 구현할 줄 알면 매우 간단하게 해결할 수 있다.
※ 알고리즘
1. 소수를 구현하는 함수를 구현
2. 펠린드롬수를 구현하는 함수를 구현
3. N을 입력받고 무한루프 속에서 두 함수를 만족하는 N이 나오면 break해주고 출력
import sys
input = sys.stdin.readline
def is_prime_number(x):
for i in range(2, x):
if x % i == 0:
return False
return True
def is_palindrome(s):
if str(s) == str(s)[::-1]:
return True
return False
N = int(input())
while True:
if is_palindrome(N) and is_prime_number(N):
print(N)
break
N += 1
펠린드롬수와 소수 알고리즘은 워낙 유명하기도 하고 여러번 구현을 해본적이 있어서 손쉽게 문제를 해결할 수 있었다.
728x90