문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/389479
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
처음 작성한 코드
서버의 증설 기록을 저장한 server_table에 저장한다.
- 기록의 범위가 크지않아 기록 이용
active_server_count k시간의 범위 만큼 증설한 서버를 이용하는 한다.
순회를 하기 때문에 active_server_count 변수를 이용해 추가된 서버와 만료된 서버의 개수를 누적시킨다.
시간당 게임 이용자의 수를 순회한다.
- 만료된 서버(i - k)를 active_server_count에서 차감
- 필요한 서버의 개수 (required_server_count)를 구한다.
- required_server_count가 active_server_count 보다 크다면 증설해야하는 서버의 개수를 서버 테이블에 저장한다.
모든 시간대를 순회하고 총 증설한 서버의 개수를 구한다.
- 총 증설한 서버의 개수는 순회동안 누적해서 구해도 된다.
def solution(players, m, k):
server_table = [0] * 24
active_server_count = 0
for i, CCU in enumerate(players): # CCU(Concurrent connected User)
active_server_count -= server_table[i - k] if i >= k else 0
required_server_count = CCU // m
if required_server_count > active_server_count:
server_table[i] = required_server_count - active_server_count
active_server_count += server_table[i]
return sum(server_table)
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Programmers][Python] 징검다리 건너기 (0) | 2024.06.17 |
---|---|
[Programmers][Python] 배열 만들기 2 (0) | 2024.05.22 |
[Programmers][Python] 세로 읽기 (0) | 2023.05.04 |
[Programmers][Python] 문자열 돌리기 (0) | 2023.05.02 |
[Programmers][Python] 멀쩡한 사각형 (0) | 2023.05.01 |