[BOJ] 추월

Minsu Han·2023년 2월 20일
0

알고리즘연습

목록 보기
84/105

코드

import sys
input = sys.stdin.readline

N = int(input())
ans = 0
inOrd = []
outOrd = []

for _ in range(N):
    inOrd.append(input().rstrip())
for _ in range(N):
    outOrd.append(input().rstrip())

for i in range(N):
    car =  inOrd[i]
    frontCars = inOrd[:i]
    backCars = outOrd[outOrd.index(car):]
    # print(frontCars, backCars)
    if len(frontCars) + len(backCars) > len(set(frontCars + backCars)):
        ans += 1

print(ans)

결과

image


풀이 방법

  • 분류: 문자열
  • 추월이라고 판단하는 기준: 들어올 때 X 앞에 있던 차들 중 하나의 차라도 나올 때 X 뒤에 있으면 X가 해당 차를 추월한 것이다
  • 들어올 때 X 앞에 있던 차들을 frontCars, 나올 때 X 뒤에 있던 차들을 backCars 리스트에 저장하였다.
  • 만약 추월한 차가 없다면 len(frontCars) + len(backCars) == len(set(frontCars + backCars))일 것이고, 추월한 차가 있다면 set(frontCars + backCars)에서 중복값이 제거되므로 길이가 다를 것이다.

profile
기록하기

0개의 댓글