#멀티탭 스케줄링 2022-02-16 22:18 start
N, K = map(int, input().split())
seq = list(map(int, input().split()))
plug = []
cnt = 0
for i in range(K):
if seq[i] in plug:
continue
if len(plug) < N:
plug.append(seq[i])
continue
idxs = []
for j in range(N):
if plug[j] in seq[i:]:
idx = seq[i:].index(plug[j])
else:
idx = 101
idxs.append(idx)
del plug[idxs.index(max(idxs))]
plug.append(seq[i])
cnt += 1
print(cnt)
반례
2 15
3 1 2 1 2 1 2 1 2 3 3 3 3 3 3
접근
- 처음엔 다음 플러그 숫자중에서 제일 횟수가 작은 종류(숫자)를 빼내면 된다고 생각
- 하지만 반례와 마찬가지로 3이 더 많이 쓰이지만, 나중에 쓰여서 결국 최소 콘센트보다 더 많이 쓰게 됨
- 나중에 쓰일 인덱스를 빼주는게 정답
'Programing > 자료구조, Algorithm' 카테고리의 다른 글
programmers -프렌즈4블록- (python) (0) | 2022.03.14 |
---|---|
프로그래머스(programmers) 신고 결과 받기 -python- (0) | 2022.03.10 |
백준 1062 (python) (0) | 2022.02.16 |
비트 마스크, 비트 마스킹(Bit-Masking)이란? (비트 마스크 알고리즘, 비트 마스킹 알고리즘) (0) | 2022.02.16 |
계수정렬이란?? (계수정렬 예시) (0) | 2022.01.03 |