n = int(input())
n_ls = []
for i in range(n):
n_ls.append(input())
m = int(input())
m_ls = []
for i in range(m):
m_ls.append(input())
idx = n_ls.index('?')
prev = idx-1
next = idx+1
for word in m_ls:
if word in n_ls: continue # 기존에 사용한 단어인경우
if idx == 0: # 물음표가 첫번째일때
if len(n_ls) == 1: print(word)
elif word[len(word)-1] == n_ls[next][0]:
print(word)
elif idx == len(n_ls) - 1: # 물음표가 마지막일때
if word[0] == n_ls[prev][len(n_ls[prev])-1]:
print(word)
else: # 물음표가 사이에 있을때
if word[0] == n_ls[prev][len(n_ls[prev]) - 1] and word[len(word)-1] == n_ls[next][0]:
print(word)
엣지 케이스를 잘 생각해야하는 문제였다. 그래도 ?가 첫번째에 오는 경우, 마지막에 오는 경우는 생각했지만 n_ls가 ? 하나인건 미처 생각하지 못해서 한참 헤멨다...
https://www.acmicpc.net/problem/28432
'study > Algorithm' 카테고리의 다른 글
[백준] 파이썬 1213번: 팰린드롬 만들기 (0) | 2024.03.30 |
---|---|
[백준] 파이썬 1764번: 듣보잡 (0) | 2024.03.30 |
[백준] 파이썬 2745번: 진법 변환 (0) | 2024.03.30 |
[백준] 2902번: KMP는 왜 KMP일까? (0) | 2024.03.30 |
[백준] 파이썬 15663번: N과 M (9) (0) | 2024.03.30 |