문제 설명

제한사항 및 입출력


풀이
별다른 알고리즘적 사고가 필요하다기보단 구현을 확인하는 문제인 것 같다. 현재 활성화된 서버를 트래킹하고 필요한만큼 추가해서 24시간 내에 몇 번이나 증설되었는지 구해주었다.
내 코드
def solution(players, m, k):
n = len(players)
diff = [0] * (n + k + 1)
active = 0
ans = 0
for t, p in enumerate(players):
# 만료 처리 (이전까지의 증설 중 이번 시점에 만료되는 서버 반영)
active += diff[t]
needed = p // m
if needed > active:
add = needed - active
ans += add
active += add
diff[t + k] -= add
return ans
언제 만료되는지 확인이 필요한 문제는 누적합처럼 배열로 끝나는 인덱스에 마킹해주어 처리해주면 좀 더 간편하게 처리할 수 있다. diff 배열을 사용하여 현재 추가한 서버가 언제 빠지는지 체크해주어 현재 활성화된 서버의 개수를 트래킹해주었다.
'Computer Science > Problem Solving' 카테고리의 다른 글
| 프로그래머스 - 조이스틱 (0) | 2025.11.17 |
|---|---|
| 프로그래머스 - 메뉴 리뉴얼 (0) | 2025.11.16 |
| 프로그래머스 - 등굣길 (0) | 2025.11.05 |
| 프로그래머스 - k진수에서 소수 개수 구하기 (0) | 2025.11.05 |
| 프로그래머스 - n^2 배열 자르기 (0) | 2025.11.04 |