백준

백준 10988번

rabbit-jun 2025. 1. 23. 13:34

문제

알파벳 소문자로만 이루어진 단어가 주어진다.
이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.

팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.

level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.

입력

첫째 줄에 단어가 주어진다.
단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

출력

첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.

나의 풀이

*n, =input()
if n[:] ==n[::-1]:
    print(1)
else: print(0)

더 있어보기게 풀라면 그렇게 할 수도 있을 듯 하다.
그러나 지금은 생각하는게 너무 싫다.
너무 오랫동안 머리를 사용했다.
개인사정으로 17시까지 휴식을 취할 수 없어 백준에 몰입하고 싶었으나 문제가 너무 빨리 풀렸다.

다른 사람의 풀이

import sys

palindrome = sys.stdin.readline().rstrip()

left,right = 0, len(palindrome) - 1

while left < right:
    if palindrome[left] != palindrome[right]:
        print(0)
        break
    left+=1
    right-=1
else:
    print(1)

인덱스를 왼쪽에서 한칸씩 오른쪽에서 한칸씩 이동하면서 맞지 않으면 바로 0이 나오게 하고 left가 높다는 것은 반 혹은 반 이상을 지났다는 것이니 거기서 멈추고 1을 출력하게 만들었다.

alp =list(str(input()))

if list(reversed(alp)) == alp:
    print(1)
else:
    print(0)

보통은 이런식으로 뒤집어 놓고 if문으로 확인했을 듯 하다.

반응형