얼음녹차의 블로그

문제 링크: 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)
profile

얼음녹차의 블로그

@PERIR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!