Palindrome 알고리즘이란?
팰린드롬(회문) 은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열(sequence of characters) 등이다 - https://ko.wikipedia.org/wiki/%ED%9A%8C%EB%AC%B8
구현
def palindrome(a):
if a == a[::-1]:
return True
else:
return False
print(palindrome([w for w in input()]))
이를 짧게 풀어서 다음과 같이 나타 낼 수 있다.
def is_palindrome(word):
return word[::-1]==word
# True
print( is_palindrome("kayak") )
print( is_palindrome("madam") )
print( is_palindrome("racecar") )
print( is_palindrome("abradacadarba") )
print( is_palindrome("토마토") )
# False
print( is_palindrome('hello') )
print( is_palindrome('coffee') )
위의 방법을 제외하고 푸는 방법 (좋은 케이스가 아님) (권장X)
def palindrome(word):
count = 0
result = False
if len(word) == 1:
result = True
elif len(word) % 2 == 1:
mid = len(word) // 2
for i in range(1, mid + 1):
if word[mid - i] == word[mid + i]:
count += 1
if count == mid:
result = True
elif len(word) % 2 == 0:
mid = len(word) // 2 - 1
for i in range(0, mid + 1):
if word[mid - i] == word[mid + 1 + i]:
count += 1
if count == mid + 1:
result = True
return result
print(palindrome(list(input())))
'Problem Solving > Algorithm' 카테고리의 다른 글
[알고리즘] 순열, 중복 순열, 조합, 중복 조합 - 자바 (0) | 2022.08.04 |
---|---|
[알고리즘] 플로이드-워셜(Floyd-Warshall) 알고리즘 (0) | 2022.05.17 |
[알고리즘] 누적합 알고리즘 (0) | 2022.05.13 |
[알고리즘] 이진 탐색 (Binary Search) (0) | 2022.05.11 |
[알고리즘] 정렬 (선택, 버블, 삽입, 퀵, 머지, 계수) (0) | 2022.05.10 |