풀긴 풀었는데, 찝찝한 기분이다.
BOJ-10174 팰린드롬 처럼 투포인터를 이용했는데, 테스트케이스가 여러개니 투포인터를 두 번 썼고, 앞+뒤/뒤+앞 을 다 검사해야하니 펠린드롬을 두번 판단 하도록 했다.
속도도 그렇게 나쁘지는 않으나,, 이게 최선인가 싶은 생각이 자꾸만 들어서, 친구랑 하는 스터디에 이슈를 오픈 해 놓았다. 다시 풀어봐야지.
쨌든! 완성된 소스코드는 아래에!
import sys
from typing import List
def is_palindrome(case: List):
front = 0
back = len(case) - 1
while(front < back):
if case[front] is not case[back]:
return False
front += 1
back -= 1
return True
def find_palindrome(words: List):
if len(words) < 2:
return '0'
front = 0
back = 1
while(front < back and front < len(words) - 1):
tmp_1 = words[front] + words[back]
tmp_2 = words[back] + words[front]
if is_palindrome(tmp_1):
return tmp_1
elif is_palindrome(tmp_2):
return tmp_2
else:
back += 1
if back == len(words):
front += 1
back = front + 1
return '0'
T = int(input())
for _ in range(T):
words = []
k = int(input())
for _ in range(k):
words.append(sys.stdin.readline().strip())
print(find_palindrome(words))