본문 바로가기
Baekjoon

[BOJ / python] #1700 멀티탭 스케줄링 그리디

by reo.l 2021. 3. 27.

import sys

n,k=map(int,sys.stdin.readline().split())
x=list(map(int,sys.stdin.readline().split()))

multi =[0]*n
ans=0


for i in range(k):
    true=0
    for j in range(n):
        if multi[j]==0 or multi[j]==x[i]:
            true=1
            multi[j]=x[i]
            break
    if true:
        continue

    else:
        temp = x[i+1:]
        late = 0
        idx = 0
        for j in range(n):
            if multi[j] in temp:
                if late <= temp.index(multi[j]):
                    late = temp.index(multi[j])
                    idx = j
            else:
                idx = j
                break
        multi[idx] = x[i]
        ans+=1

print(ans)

 

예외를 찾다가 시간을 많이 보냈다. 처음 시작할 때 x [:n]만큼 멀티탭에 꽂아놨는데 케이스가 1 1 2 인경우 1을 리턴한다. 같은 스케줄은 한 곳에 꽂혀있어야 하기 때문이다. 자리가 비었거나 같은 것인 경우 넘어가고 아닌 경우 다시 사용될 것들 중 마지막을 찾아 그곳에 꽂아 준다.

댓글