[10988] 백준 문제풀이 - 팰린드롬인지 확인하기

https://www.acmicpc.net/problem/10988

문제

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

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

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

입력

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

출력

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

Python Code

첫 번째 시도에서 틀렸다. 첫 번째 접근방법은 첫 글자와 끝 글자부터 하나하나씩 비교해서 틀리면 0, 맞으면 1을 반환하기였으며, 작성한 코드는 다음과 같았다.

1
2
3
4
5
6
7
8
9
10
11
word = input()

switch =0
for i in range(0, int(len(word) / 2)):
    if word[i] != word[len(word) - i - 1]:
        switch=0
        break
    else:
        switch=1

print(switch)

그리고 예시 입/출력값도 정상적으로 실행이 되어 문제를 제출했지만 오답처리되었다. 그리고 int(len(word) / 2) 부분이 한 글자일때 처리하지 못한다는 맹점을 발견했다. 생각의 발상으로, 뒤집어도 똑같다면 리스트를 뒤집어주는 함수 reversed를 사용하면 쉽게 풀 수 있을 것 같았다.

1
2
3
4
5
6
word = list(str(input()))

if list(reversed(word)) == word:
    print("1")
else:
    print("0")

댓글남기기