[baekjoon] 추월

김민서·2024년 1월 9일
0

알고리즘 문제풀이

목록 보기
24/47

링크텍스트

터널에 들어간 차들이 순서대로 주어지고, 터널에서 나오는 차들이 순서대로 주어질 때, 터널 안에서 추월을 했을 차들의 수를 구하는 문제이다.

터널에 들어간 차(번호판) 순서
ZG508OK
PU305A
RI604B
ZG206A
ZG232ZF

터널에서 나오는 차(번호판) 순서
PU305A
ZG232ZF
ZG206A
ZG508OK
RI604B

답: 3

n = int(input()) # 차 수

in_car = {}
out_car = []
for idx in range(n):      # 터널의 입구 -> 차가 들어가는 순서
    car = input()
    in_car[car] = idx
    
# {'ZG508OK': 0, 'PU305A': 1, 'RI604B': 2, 'ZG206A': 3, 'ZG232ZF': 4}

for in_car_num in in_car:      # 터널의 출구 -> 차가 나오는 순서
    out_car_num = input()
    if out_car_num in in_car.keys():
        out_car.append([out_car_num, in_car[out_car_num]])
count = 0
# [['PU305A', 1], ['ZG232ZF', 4], ['ZG206A', 3], ['ZG508OK', 0], ['RI604B', 2]]

for idx, car in enumerate(out_car):
    # car[0] : 차 번호
    # car[1] : 인덱스
    if idx < car[1]:
        count += 1

print(count)

차가 들어가는 순서대로 번호판과 순서(인덱스)를 키와 값 형태로 저장하고 (번호판: 순서)
차들이 들어갈 때 순서를 나올 때의 순서와 비교해서 추월 여부를 판단한다.

0개의 댓글