알고리즘/BOJ

[Python] 백준 1700: 멀티탭 스케쥴링

PIAI 2021. 9. 19. 22:02

https://www.acmicpc.net/problem/1700

 

1700번: 멀티탭 스케줄링

기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전

www.acmicpc.net

1. 현재 멀티탭에 삽입하고자 하는 플러그가 있으면 continue 한다.

2. 멀티탭 자리가 비어있으면 그대로 꽂는다.

3. 멀티탭의 자리가 꽉 찼을 경우 (이 경우를 찾는 게 너무 어려웠다.) 현재 멀티탭에 있는 정보중 나중에 꽂을 플러그가 멀어지면 멀어질수록 뽑아야 할 우선순위가 높다. 

 

n, k = map(int, input().split())
items = list(map(int, input().split()))
tap = []
ans = 0

for i, item in enumerate(items):
    if item in tap:
        continue
    if len(tap) < n:
        tap.append(item)
    else:
        val = 0
        idx = -1
        ans += 1
        tmp = items[i:]
        for x in tap:
            if x in tmp:
            	target = tmp.index(x)
                if idx < target:
                    idx = target
                    val = x
            else:
                val = x
                break
        tap[tap.index(val)] = item

print(ans)