[문제]
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.

https://www.acmicpc.net/problem/10988
10988번: 팰린드롬인지 확인하기
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
www.acmicpc.net
🎨 풀이
💡 전체 코드
word = str(input())
result = 1
if len(word) % 2 != 0: # 단어가 홀수인 경우
tmp = len(word) // 2
word_1 = word[0:tmp]
word_2 = word[tmp+1:len(word)]
else : # 단어가 짝수인 경우
tmp = len(word) // 2 - 1
word_1 = word[0:tmp+1]
word_2 = word[tmp+1:len(word)]
word_2 = word_2[::-1]
for i in range(len(word_1)):
if word_1[i] != word_2[i]:
result = 0
break
print(result)
> 핵심 : 문자를 반으로 자른 후 같은 지 비교하기
🍦 코드 설명 (실행 순서대로 나열)
# main
word = str(input())
result = 1
1. word를 입력받는다.
2. result를 1로 초기화한다.
- 일단 팰린드롬이 맞다고 가정하고, 이후 과정에서 아닌 게 밝혀지면 0으로 바꿀 예정
if len(word) % 2 != 0: # 단어가 홀수인 경우
tmp = len(word) // 2
word_1 = word[0:tmp]
word_2 = word[tmp+1:len(word)]
else : # 단어가 짝수인 경우
tmp = len(word) // 2 - 1
word_1 = word[0:tmp+1]
word_2 = word[tmp+1:len(word)]
3. 단어가 홀수인지 짝수인지에 따라 tmp에 넣은 후, tmp를 이용해서 단어를 자른다.
- word_1 : 단어의 앞부분
- word_2 : 단어의 뒷부분
word_2 = word_2[::-1]
for i in range(len(word_1)):
if word_1[i] != word_2[i]:
result = 0
break
4. word_2 를 뒤집는다.
- (ex) word_2 = "abcd" => "dcba"
5. word_1과 word_2를 한글자씩 비교한다.
- 만약, 같지 않은게 있다면 result를 0으로 바꾼 후 break 한다.
print(result)
6. result를 출력한다.

끝~
⭐ 느낀점
> for문을 좀 많이 쓴 느낌이 나긴 하는데. 그래도 뭐 잘했다고 생각한다. 고생했다!
'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 1924번 - 2007년 (파이썬) (0) | 2022.08.26 |
---|---|
[백준] 2920번 - 음계 (파이썬) (0) | 2022.08.25 |
[백준] 2441번 - 별 찍기 4 (파이썬) (0) | 2022.08.22 |
[백준] 10817번 - 세 수 (파이썬) (0) | 2022.08.21 |
[백준] 10886번 - 0 = not cute / 1 = cute (파이썬) (0) | 2022.08.20 |