종식당

[백준 1747] 소수&팰린드롬 본문

백준

[백준 1747] 소수&팰린드롬

종식당 2024. 8. 16. 16:36
728x90
반응형

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


  • 문제설명
    먼저 숫자 N을 입력받고 N부터 1,000,000까지 숫자 중 소수이면서 팰린드롬인 수를 구해 출력하면 된다. 여기서 팰린드롬 수란 숫자를 거꾸로 뒤집었을 때 처음 숫자와 같은 수를 말한다. ex) 101, 202

  • 제출코드
import math

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 isPel(x):
    if str(x) == str(x)[::-1]:
        return True
    return False

N = int(input())
while True:
    if isPrime(N) and isPel(N):
        print(N)
        break
    N+=1

소수를 판별하는 함수 isPrime함수와 팰린드롬 수를 판별하는 함수 isPel함수를 만들었다.
소수를 판별하기 위해서는 for문을 통해 2부터 해당 수의 제곱근 + 1 한 정수까지 돌린다. 이때 아무것도 나누어 떨어지지 않으면 소수이다. 대신 1은 소수가 아니니 예외처리를 해주었다. 
팰린드롬을 구하기 위해서는 해당 수를 문자로 바꾸어 뒤집었을 때 원래의 수와 갔다면 True를 반환한다.
그 후 N을 입력받고 무한 루프를 돌린다. 두 함수를 호출하고 둘 다 참일 때 출력하고 break를 통해 무한 루프를 탈출한다.

 


  • 마무리
    마지막 방학이 거의 다 끝나가지만 이제부터라도 하루에 적어도 한 문제 꼭 풀기!
728x90
반응형

'백준' 카테고리의 다른 글

[백준 3050] 나머지  (0) 2024.09.28
[백준 7562] 나이트의 이동  (0) 2024.08.20
[백준 2776] 암기왕  (1) 2024.04.02
[백준 1929] 소수 만들기  (0) 2024.02.14
[백준 11053, 12015] 가장 긴 증가하는 부분 수열 1, 2  (1) 2024.02.08