본문 바로가기

PS

[BOJ} 멀티탭 스케줄링

import sys
input = sys.stdin.readline 

n, k = map(int, input().split())
a = list(map(int, input().split()))

plugged_in = []
unplugs = 0 

for i in range(k):
    current = a[i]
    if current in plugged_in:
        continue
    if len(plugged_in) < n:
        plugged_in.append(current)
        continue
        
    farthest_usage = -1
    to_unplug_index = -1
    
    for j in range(len(plugged_in)):
        try:
            next_usage = a[i+1:].index(plugged_in[j])
        except ValueError:
            next_usage = float('inf')    
        if next_usage > farthest_usage:
            farthest_usage = next_usage
            to_unplug_index = j
    
    plugged_in.pop(to_unplug_index)
    unplugs += 1 
    plugged_in.append(current)
    
print(unplugs)

'PS' 카테고리의 다른 글

포탑 부수기 [삼성 기출]  (0) 2023.10.13
토마토 [백준 7569]  (0) 2023.10.13
코드트리 빵 [삼성 기출]  (0) 2023.10.13
나무 박멸 [삼성 기출]  (0) 2023.10.12
꼬리잡기 놀이 [삼성 기출]  (0) 2023.10.12