백준 1700번 멀티탭 스케줄링

DARTZ·2022년 5월 11일
0

알고리즘

목록 보기
52/135
import sys
input = sys.stdin.readline

N, K = map(int, input().split())

multitap = list(map(int, input().split()))

plugs = []
count = 0

for i in range(K):
  if multitap[i] in plugs: # 플러그 안에 사용할 전기 용품이 있다면 패스
    continue
  
  if len(plugs) < N: # 플러그가 1개라도 비어 있으면 집어넣는다.
    plugs.append(multitap[i])
    continue
  
  multitap_idxs = [] # 다음 멀티탭의 값을 저장.
  hasplug = True

  for j in range(N):
    if plugs[j] in multitap[i:]: # 멀티탭 안에 플러그 값이 있다면
      multitap_idx = multitap[i:].index(plugs[j]) # 멀티탭 인덱스 위치 값 가져오기.
    else:
      multitap_idx = 101 # 개수의 최댓값이 100 이므로 101을 넣어준다.
      hasplug = False

    multitap_idxs.append(multitap_idx) # 인덱스에 값을 넣어준다.
    
    if not hasplug: # 없다면 종료
      break
  
  plug_out = multitap_idxs.index(max(multitap_idxs)) # 플러그를 뽑는다.
  del plugs[plug_out] # 플러그에서 제거
  plugs.append(multitap[i]) # 플러그에 멀티탭 값 삽입
  count += 1 # 뽑았으므로 1 증가

print(count)
profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글