https://school.programmers.co.kr/learn/courses/30/lessons/389479
코드
function solution(players, m, k) {
let answer = 0; // 최소 서버 증설 횟수
const servers = [];
for (let time = 0; time < 24; time++) {
// 한 번 증설한 서버는 k시간 동안 운영하고 그 이후에는 반납합니다.
while (servers.length && time - servers[0].startTime >= k) {
servers.shift();
}
// 어느 시간대의 이용자가 n x m명 이상 (n + 1) x m명 미만이라면 최소 n대의 증설된 서버가 운영 중이어야 합니다.
const n = Math.floor(players[time] / m);
if (servers.length < n) {
const 증설횟수 = n - servers.length;
for (let i = 0; i < 증설횟수; i++) {
servers.push({ startTime: time });
}
answer += 증설횟수;
}
}
return answer;
}
오늘 배운 것
- 주석은 안 달아야 베스트다? => ❌. 이 문제를 잘 모르는 사람이 봐도 이해할 수 있게 문제의 요구사항을 주석으로 남기는 것이 좋음. 쓸데없이 이 변수가 뭔지 설명하는 그런 주석은 필요없는게 맞음.
- 문제의 흐름에 맞게 코드를 작성해야 알아보기 쉬움.
- 연관 있는 코드끼리 모여있도록 하자.
- 시간/공간복잡도는 당연히 고려하고
- F2 눌러서 한 번에 변수 이름 바꾸기
'문제풀이 > Greedy' 카테고리의 다른 글
[Python/파이썬] 백준 1036번 36진수 (0) | 2025.03.25 |
---|---|
[Python/파이썬] 백준 1946번 신입 사원 (0) | 2025.03.13 |
[Python/파이썬] 백준 17615번 볼 모으기 (0) | 2025.02.19 |
[Python/파이썬] 백준 1700번 멀티탭 스케줄링 (0) | 2025.02.14 |
[Python/파이썬] 프로그래머스 단속카메라 (0) | 2024.10.26 |