N = int(input())
cnt, tcnt = 0, 0
log = [0]*N
word = [] # 앵무새가 말할 문장 들
for _ in range(N):
temp = input().split()
cnt += len(temp) # 총 몇개의 단어로 이루어져 있는지 계산
word.append(temp)
sent = input().split() # 실제로 들은 문장
while sent:
p = sent.pop(0) # 하나씩 뽑아가며 word 순회
tcnt += 1 # 총 받아적은 단어 수를 알기 위함
for j in range(N): # word안에 비교
flag = False
if log[j] <= len(word[j])-1 and p == word[j][log[j]]:
# 앵무새가 말할 문장 중 몇번째를 말해야되는지 기록한것과
# 지금 pop한게 같으면
word[j][log[j]] = 0 # 어.. 이거 필요없는거임
log[j] += 1 # 앞으로 몇번째를 말해야되는지 기록
flag = True
break
if j == (N-1) and flag == False:
# word 다 돌았는데도 맞는게 없으면
print('Impossible')
exit(0)
if sent or cnt != tcnt: print('Impossible')
else: print('Possible')
쫌,, 비효율적이긴 한데,, 처음에 짠게 아까워서 덕지덕지 붙였기 때문이다
아직 과감하게 코드 버리기 어려움... 미련.. 결론적으로 정답 나왔으니 됐는데
리팩토링이 필요할 것 같다가 아니라 필요함...
일단 flag부분부터 아.. 방금풀었는데 왜 이딴식으로 했는지 이해가 안감ㅋㅋ