문제: https://www.acmicpc.net/problem/8892
유사한 문제: https://hyundoil.tistory.com/172
문제
팰린드롬은 어느 방향으로 읽어도 항상 같은 방법으로 읽을 수 있는 단어이다. 예를 들어, civic, radar, rotor, madam은 팰린드롬이다.
상근이는 단어 k개 적혀있는 공책을 발견했다. 공책의 단어는 ICPC 문제가 저장되어 있는 서버에 접속할 수 있는 비밀번호에 대한 힌트이다. 비밀번호는 k개의 단어 중에서 두 단어를 합쳐야 되고, 팰린드롬이어야 한다. 예를 들어, 단어가 aaba, ba, ababa, bbaa, baaba일 때, ababa와 ba를 합치면 팰린드롬 abababa를 찾을 수 있다.
단어 k개 주어졌을 때, 팰린드롬을 찾는 프로그램을 작성하시오.
출력
각 테스트 케이스마다 팰린드롬을 출력한다. 만약, 가능한 팰린드롬이 여러 가지라면 아무거나 출력한다. 팰린드롬을 만들 수 없는 경우에는 0을 출력한다.
예제 입력 1
2
5
aaba
ba
ababa
bbaa
baaba
3
abc
bcd
cde
각 테스트별 주어진 문자열들에서 2개를 뽑아 합쳐서 팰린드롬이 있으면 출력하고 없으면 0을 출력하는 문제이다.
import sys
from itertools import combinations
def solution(words):
answer = 0
for a,b in combinations(words,2):
password1 = a+b
password2 = b+a
if password1 == password1[::-1]:
answer = password1
if password2 == password2[::-1]:
answer = password2
return answer
if __name__=="__main__":
T = int(input())
for _ in range(T):
k = int(input())
words = [str(input().rstrip()) for _ in range(k)]
print(solution(words))