본문 바로가기
ALGORITHM/백준

[BOJ/PYTHON] 8892. 팰린드롬

by 뭉망뭉 2023. 6. 1.

백준 문제 링크: https://www.acmicpc.net/problem/8892

문제 요약

팰린드롬은 어느 방향으로 읽어도 항상 같은 방법으로 읽을 수 있는 단어인데,

단어 k개 주어졌을 때, 팰린드롬을 찾으면 된다.

공책에 있는 단어들 중 두 단어를 합쳐 팰린드롬이 나와야 한다.

핵심 아이디어

두 단어씩 다 합쳐보고 합친 애랑 거꾸로 한 애랑 같으면 팰린드롬 리스트에 넣으면 된다.

풀이

# silver5-8892. 팰린드롬

import sys
input = sys.stdin.readline

t = int(input()) # 테스트 케이스
for _ in range(t):
    k = int(input()) # 단어의 수
    words = [list(map(str, input().rstrip())) for _ in range(k)] # 단어
    answer_list = []
    for i in range(k):
        for j in range(k):
            if i == j: continue # 자기끼리 더하는 경우 무시 (서로 다른 애끼리 해야)
            new_word = words[i] + words[j]
            if new_word == new_word[::-1]: # 똑바로 있는 애랑 거꾸로 있는 애랑 동일
                answer_list.append(new_word)
    # 팰린드롬 되는 경우가 아예 없음
    if not answer_list: print(0)
    else: print(*answer_list[0], sep='')

실행 시간

메모리 31256KB, 시간 412ms (python3)

댓글