728x90
반응형
구현, 문자열, 해시 테이블 문제이다.
# 실버1 -> 구현, 자료구조, 문자열, 해시
# 들어간 순서 해시 테이블로 저장해두기
# 나온 차량 순서 기준으로, 이후 나올 차량의 "들어올 때 인덱스"를 찾아서
# 나온 차량의 들어올 때 인덱스가 한 번이라도 더 클 경우 result += 1
N = int(input())
go_in = dict()
come_out = []
for i in range(N):
go_in[input()] = i
for i in range(N):
come_out.append(input())
result = 0
for i in range(len(go_in) - 1):
# 현재 나온 차량의, 들어올 때 순서
out_car = go_in[come_out[i]]
# 이후 나올 차량의, 들어올 때 순서와 비교하여 추월일 경우 추가
for j in range(i+1, len(go_in)):
if out_car > go_in[come_out[j]]:
result += 1
break
print(result)
처음엔 각 차량의 입구/출구 에서의 절대적인 위치만을 비교하여, 기존 위치보다 빠른 인덱스에 있다면 추월한 것으로 생각하여 구현했지만 틀렸었다.
조금 더 생각해보니, 한번 추월을 한 후 다른 차량에게 여러번 추월당하면 추월 차량이면서도 추월하지 않은 것으로 판단될 수 있기 때문이었다. 그래서 상대적인 위치를 파악해야 했다.
나오는 차량을 순서대로 기준으로 잡아, "해당 차량의 들어올 때 위치"와 "해당 차량 이후로 나올 모든 차량들의 들어올 때 위치" 를 비교하여, 한 번이라도 "해당 차량의 들어올 때 위치"가 더 컸다면(인덱스가 더 크다면, 즉 뒤에 있었다면) 추월한 것으로 간주하고 결과에 추가해 주면 된다.
728x90
반응형
'Algorithm > Implementation' 카테고리의 다른 글
[Baekjoon 14503 / Python / 골드5] 로봇 청소기 (2) | 2024.10.07 |
---|---|
[Baekjoon 2108 / Python / 실버3] 통계학 (2) | 2024.09.25 |
[Baekjoon 2503 / Python / 실버3] 숫자 야구 (4) | 2024.06.10 |
[Baekjoon 13717 / Java / 실버5] 포켓몬 GO (0) | 2024.05.14 |
[Baekjoon 10655 / Java / 실버3] 마라톤 1 (0) | 2024.04.27 |