CodingTest/Baekjoon

[백준/Python] 10988번 : 팰린드롬인지 확인하기

JuniTech 2023. 5. 20. 09:00
728x90
시간 제한  메모리 제한 문제 티어 정답 비율
1 초 256 MB
브론즈 II
65.509%

📜 문제

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

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

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

 

📥입력

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

 

 

📤출력

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

 

💡풀이

처음에 내가 풀었던 풀이는 다음과 같다.
import sys

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

j = -1
count = 0
for i in word:
  if i != word[j]:
    print(0)
    break
  j -= 1
  count += 1
  if count >= len(word) // 2:
    print(1)
    break

word 변수에 단어를 입력한 다음, for 반복문을 통해 앞에 있는 알파벳과 맨 뒤에 있는 알파벳을 비교하여 어느 하나라도 다르다면 0 출력 후 반복문 탈출한다. 만약 단어의 중간까지 가서도 양쪽에 있는 알파벳이랑 같다면 결국 팰린드롬이므로 1 출력 후 반복문을 탈출하는 식으로 조건문을 구성해봤다.

 

이렇게 코드를 짜다보니까 "분명 더 쉬운 코드가 있을텐데 "하고 궁금증이 생겨서 다른 사람의 블로그 포스팅을 참고해본 결과, 역시나 더 쉽고 간단하게 풀 수 있었다..😅 

import sys

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

print(0 if word != word[::-1] else 1)

사실상 내 위의 반복문 코드는 '0 if word != word[::-1] else 1'와 비슷하다고 볼 수 있다.