문제
단어 리스트에서 words[i] + words[j]가 팰린드롬이 되는 모든 인덱스 조합(i,j)를 구하라
입력
["abcd", "dcba", "lls" "s", "sssll"]
출력
[[0,1], [1,0], [3,2], [2,4]]
풀이
- 브루트 포스 풀이 → 모든 조합을 계산해서 검증
- i, j를 돌면서 검증
→ O(n^2)는 타임아웃남!!
def is_palindrome(word): return word == word[::-1] def palindrome_pair(self, words): results = [] for i, front in enumerate(words): for j, rear in enumerate(words): if i != j and is_palindrome(front+rear): results.append([i,j]) return results
- 트라이를 활용한 팰린드롬 검증