백준
[백준 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
반응형