14713. 앵무새

jp·2021년 11월 7일
0

baekjoon

목록 보기
12/15

문제

코드

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부분부터 아.. 방금풀었는데 왜 이딴식으로 했는지 이해가 안감ㅋㅋ

profile
응애 개발자지망생이 알고리즘에 고통받는 중

0개의 댓글