728x90
https://www.acmicpc.net/problem/1700
1700번: 멀티탭 스케줄링
기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전
www.acmicpc.net
⭐ 문제
첫 줄에는 멀티탭 구멍의 개수 N (1 ≤ N ≤ 100)과 전기 용품의 총 사용횟수 K (1 ≤ K ≤ 100)가 정수로 주어진다. 두 번째 줄에는 전기용품의 이름이 K 이하의 자연수로 사용 순서대로 주어진다. 각 줄의 모든 정수 사이는 공백문자로 구분되어 있다.
3 구(구멍이 세 개 달린) 멀티탭을 쓸 때, 전기용품의 사용 순서가 아래와 같이 주어진다면,
- 키보드
- 헤어드라이기
- 핸드폰 충전기
- 디지털 카메라 충전기
- 키보드
- 헤어드라이기
키보드, 헤어드라이기, 핸드폰 충전기의 플러그를 순서대로 멀티탭에 꽂은 다음 디지털 카메라 충전기 플러그를 꽂기 전에 핸드폰충전기 플러그를 빼는 것이 최적일 것이므로 플러그는 한 번만 빼면 된다.
⭐ 코드 분석
빈도값이 높은 수를 뽑으면 전체 카운트 갯수가 최소가 아니기 때문에 빈도값이 낮은 수를 빼면서 교체할 때마다 cnt 수를 올린다
⭐ 코드
N, K = map(int, input().split())
if N >= K :
print(0)
exit()
elec_list = list(map(int, input().split()))
plug = set()
cnt = 0
def find_latest(idx) :
result = 0
max_idx = -1
for num in plug :
try :
num_idx = elec_list[idx:].index(num)
except :
num_idx = K
if max_idx < num_idx :
result, max_idx = num, num_idx
return result
for idx, num in enumerate(elec_list) :
plug.add(num)
if len(plug) > N :
cnt += 1
latest_used = find_latest(idx)
plug.discard(latest_used)
print(cnt)
'Python > 백준' 카테고리의 다른 글
[python/백준] 12865번: 평범한 배낭 (0) | 2023.11.06 |
---|---|
[python/백준] 7570번: 줄 세우기 (0) | 2023.11.05 |
[python/백준] 2170번: 선 긋기 (0) | 2023.11.03 |
[python/백준] 15903번: 카드 합체 놀이 (0) | 2023.11.01 |
[python/백준] 11000번 : 강의실 배정 (0) | 2023.11.01 |