본문 바로가기
코딩 테스트/Python_백준

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

by 모두의 케빈 2023. 3. 26.

■ 10988번 팰린드롬인지 확인하기

 

출처: 백준 10988번 팰린드롬인지 확인하기

 

■ 코드 풀이

 

문자열은 list처럼 slicing이 가능하다는 점을 알고 있다면, 쉽게 풀 수 있는 문제입니다. 두 가지 방법으로 풀어보겠습니다. 먼저 아래의 코드는 word를 입력받고, word의 reverse를 word_reverse 변수에 할당합니다. 그리고 for loop를 순서대로 돌면서 word와 word_reverse를 element-wise 별로 비교합니다. 각 위치 별로 단어가 같다면, True가 되고 이는 곧 숫자 1과 같으므로 문자가 모두 같다면 sum은 문자열의 길이와 동일해집니다.

이때, 단어의 역순을 구하는 방법에도 두 가지가 있습니다. 첫 번째는 word[-1::-1], 마지막 문자부터 첫 번째 문자까지 역순으로 배열하는 방법이고 두 번째는 reverse() 함수를 사용하는 것입니다. 정답을 채점했을 때, reverse() 함수의 속도가 빨라서 아래 코드에는 reverse 함수를 남겨두었습니다.

word = input()
#word_reverse = word[-1::-1]
word_reverse = ''.join(reversed(word))

sum = 0

for i in range(len(word)):
    sum += (word[i]==word_reverse[i])

if sum == len(word):
    print(1)
else:
    print(0)

 

두 번째 풀이 방법은 reverse를 따로 구하지 않고 indexing만을 사용하여 바로 비교하는 방법입니다. 저는 두 번째 풀이 방법이 더 빠를 것이라고 생각했는데 놀랍게도 속도는 위의 코드가 더 빠르네요. 알다가도 모를 코딩의 세계인 것 같습니다.

word = input()

sum = 0

for i in range(len(word)):
    sum += (word[i] == word[-1-i])

if sum == len(word):
    print(1)
else:
    print(0)

댓글