백준(Python) 풀이/수학

백준(Python) 1747번 소수&팰린드롬 풀이

개발윗미 2021. 10. 30. 11:50

Python으로 구현한 1747번 소수&팰린드롬 문제 풀이입니다.

 

https://www.acmicpc.net/problem/1747

 

1747번: 소수&팰린드롬

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,

www.acmicpc.net


import math

def isPrime(x) :
  for i in range(2, int(math.sqrt(x) + 1)) :
    if x % i == 0 :
      return False
    
  return True

n = int(input())
min_value = 0

for i in range(n, 1000001) :
  if i == 1 :
    continue
  if str(i) == str(i)[::-1] :
    if isPrime(i) :
      min_value = i
      break

if min_value == 0 :
  min_value = 1003001

print(min_value)

 

입력받은 n부터 1000000까지 수를 확인하여 그 값이 1이라면 소수가 아니기 때문에 넘어가고,

 

팰린드롬 수일 경우 isPrime( ) 함수를 통해 소수인지 판별한다. 해당 수가 소수일 경우 min_value에 그 값을 넣고 종료한다.

 

최종적으로 min_value의 값이 0일 경우 입력된 n값이 1,000,000이기 때문에 1,000,000 이상의 수 중

 

소수이면서 팰림드롬일 경우를 적용하여 출력한다.