백준 문제 링크: 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)
'ALGORITHM > 백준' 카테고리의 다른 글
[BOJ/PYTHON] 15904. UCPC는 무엇의 약자일까? (0) | 2023.06.01 |
---|---|
[BOJ/PYTHON] 2866. 문자열 잘라내기 (0) | 2023.06.01 |
[BOJ/PYTHON] 19591. 독특한 계산기 (0) | 2023.06.01 |
[BOJ/PYTHON] 3078. 좋은 친구 (0) | 2023.06.01 |
[BOJ/PYTHON] 20301. 반전 요세푸스 (0) | 2023.06.01 |
댓글