https://www.acmicpc.net/problem/1700
1700번: 멀티탭 스케줄링
기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전
www.acmicpc.net
[코드]
import sys
N, K = map(int, sys.stdin.readline().split())
use_order = list(map(int, sys.stdin.readline().split()))
cur_plugged = []
unplug_times = 0
for i, elec in enumerate(use_order):
# 이미 꽂혀 있니?
if elec in cur_plugged:
continue
# 멀티탭이 비어있니?
if len(cur_plugged) < N:
cur_plugged.append(elec)
continue
# 멀티탭에 전부 꽂아서 하나 빼야함
# 다시 안쓰이는 전자제품 있니?
is_there_unused_elec = False
change_idx = 0
for j, v in enumerate(cur_plugged):
if v not in use_order[i:]:
is_there_unused_elec = True
change_idx = j
# 다시 안쓰이는게 있는경우
if is_there_unused_elec:
del cur_plugged[change_idx]
cur_plugged.append(use_order[i])
# 다시 안쓰이는게 없는 경우, 전부 나중에 쓰임
else:
# 가장 나중에 쓰이는 것을 바꿔야함
tmp = [0] * len(cur_plugged)
for k, v in enumerate(cur_plugged):
tmp[k] = use_order[i:].index(v)
change_idx = tmp.index(max(tmp))
del cur_plugged[change_idx]
cur_plugged.append(use_order[i])
unplug_times += 1
print(unplug_times)
'코딩테스트 준비 > [백준]' 카테고리의 다른 글
[백준] 13904번 - 과제 (파이썬) (0) | 2021.05.15 |
---|---|
[백준] 2212번 - 센서 (파이썬) (0) | 2021.05.15 |
[백준] 1931번 - 회의실 배정 (파이썬) (0) | 2021.05.15 |
[백준] 11000번 - 강의실 배정 (파이썬) (0) | 2021.05.13 |
[백준] 11047번 - 동전0 (파이썬) (0) | 2021.05.13 |