[BOJ]1700_멀티탭 스케줄링

zioo·2022년 5월 11일
0

멀티탭 스케쥴링

문제 풀이

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

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

  3. 멀티탭의 자리가 꽉 찼을 경우 뽑아야할 때, 꽂혀있는 플러그 중에서 이후 가장 나중에 사용되는 전기용품 또는 이후 사용되지 않는 전기용품을 먼저 뽑는다.

  4. N과 K모두 100이하 이므로 시간초과에 대해서 생각하지 않아도 된다.

코드


import sys

n, k = map(int, input().split())
arr = list(map(int, input().split()))
plugin = []
answer = 0
for i in range(k):
    if arr[i] in plugin:
        continue
    if len(plugin) < n:
        plugin.append(arr[i])
        continue
     
    # 플러그를 뽑아야 함
    answer += 1
    out = 0  # 뽑을 플러그
    outidx = 0  # out이 이후 몇 번째에 사용되는지 (arr에서 인덱스)
    for j in range(n):
        try:
            idx = arr[i+1:].index(plugin[j]) # 똑같은 수 인덱스 찾기 
            if idx > outidx: # 제일 나중에 쓰일 것 찾기 위해 
                out = j
                outidx = idx
        except: 
        # 이후 사용되지 않는 플러그가 있다면 걔를 뽑으면 된다.
            out = j
            break
    plugin[out] = arr[i]
print(answer)





0개의 댓글