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

jeongjeong2·2023년 5월 1일
0

For coding test

목록 보기
40/59

문제 바로가기

문제 풀이

check_p, check_pnum으로 팰린드롬과 소수를 판별하는 함수를 정의한 뒤 두 함수의 return값이 모두 1일 때의 출력을 구했다
이 때 1은 팰린드롬이긴하지만 소수가 아니어서 1일 때는 2로 출력해주는 예외를 적어줘야 한다.(...)

정답 코드

"""
문제 바로가기 https://www.acmicpc.net/problem/1747
"""
def checkp(a:str)->int:
    if a == a[::-1]:
        return 1
    else:
        return 0
    
def checkpnum(a:int)->int:
    cnt = 0
    for i in range(1,int(a**(1/2))+1):
        if a%i == 0:
            cnt += 1
    if cnt == 1:
        return 1
    else:
        return 0
N = int(input())
i = N
while True:
    if i == 1:
        print(2)
        break
    if checkp(str(i)) == 1 and checkpnum(i) == 1:
        print(i)
        break
    i += 1

추가적인 개념 (optional)

def checkpnum(a:int)->int:
    cnt = 0
    for i in range(1,int(a**(1/2))+1):
        if a%i == 0:
            cnt += 1
    if cnt == 1:
        return 1
    else:
        return 0

소수임을 판단하는 함수로 제곱근을 사용할 때의 범위를 잘 파악해두면 좋다.
함수에서 a : int , -> int는 각각 입력값, 출력값의 타입을 의미하는 것으로 코드의 가독성을 높인다.

0개의 댓글