[백준 Python] 4096번 팰린드로미터

iwtkmn_0219·2023년 1월 7일
0

백준 Python

목록 보기
2/32
post-thumbnail

백준 4096 팰린드로미터 (실버 5)

문제

승환이는 팰린드롬을 좋아한다. 지금 승환이의 자동차의 주행 거리계에 100000이 적혀있다. 승환이는 1km만 더 주행을 하면 100001이 된다! 승환이는 엄청나게 흥분했다.

주행 거리계에 적혀져 있는 수가 주어졌을 때, 몇 km를 더 주행하면 팰린드롬이 되는지 구하는 프로그램을 작성하시오. 승환이는 모든 자리가 팰린드롬이 되어야 한다. 따라서, 주행 거리계에 00121인 경우에는 팰린드롬이 아니다.

입력

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 현재 승환이의 주행 거리계에 적혀있는 수가 주어진다.이 숫자는 2자리와 9자리 사이(포함)이다. 예를 들어, 주행 거리계에 적히는 숫자의 갯수는, 입력으로 주어진 수의 숫자의 갯수와 같다. 그래서, 입력이 00456이라면, 5자리 숫자이다. 마지막 줄에는 0이 적혀있다.

출력

각 테스트 케이스에 대해서 주행 거리계의 수가 팰린드롬이 되기 위해 주행해야 하는 최소 거리를 출력한다. 만약 이미 팰린드롬이라면 0을 출력한다.

풀이 및 회고

풀이

간단한 팰린드롬 문제이지만 앞에 오는 0까지 신경써야하는 문제였다. 나의 경우에는 입력을 문자로 받고서 정수로 변환한 후 1을 더한 다음 다시 앞에 0을 붙여주는 방식으로 진행하였다.

회고

좋은 풀이라고는 할 수 없다고 생각한다. 문자, 정수 간의 변환 없이 문제를 풀 수 있을 것 같기 때문이다. 근데 굳이 안할래..

코드

def is_palindrome(s: str) -> bool:
    length = len(s)
    for i in range(length // 2):
        if s[i] != s[-i - 1]:
            return False
    return True


while True:
    s = input()
    if s == "0":
        break

    cnt = 0
    while not is_palindrome(s):
        length = len(s)
        int_s = int(s) + 1
        cnt += 1
        tmp_s = str(int_s)
        s = "0" * (length - len(tmp_s)) + tmp_s
    print(cnt)

>> iwtkmn0219의 Github <<

0개의 댓글