728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]
문제가 길어서 링크타고 보시길 바랍니다.

📍 [코드]
class Solution {
public int solution(int[] players, int m, int k) {
int answer = 0;
int[] work = new int[players.length + k]; // 반납 시간 저장
int worker = 0; // 운영 중 서버
for(int i = 0; i < players.length; i++) {
worker -= work[i]; // 반납 된 서버 빼기
int required = players[i] / m;
if(required > worker) {
int server = required - worker;
answer += server;
worker += server;
work[i + k] += server;
}
}
return answer;
}
}
💡 접근법
- 서버를 반납할 때를 저장하는 work 배열을 생성하고,
- players 배열을 순회한다.
- 처음에 work 배열은 모두 0이므로 운영중인 서버는 변동이 없고
- 서버가 필요한지
required변수를 통해 계산한다. - 만약
운영 중인 서버 수 < 필요한 서버 수라면 그만큼 서버를 증설하고, - 증설한 수를 answer과 worker에 추가한다.
- 이때, work 배열에 현재 인덱스에서 k 번째 후 인덱스에 증설한 서버 수를 저장하여 나중에 반납할 시 뺄 수 있게한다.
✅ 증설된 서버를 빼는 것을 우선적으로 해주어 간결한 코드가 되었다.
💬 마무리
이 문제는 문제의 흐름을 잘파악하여 조건을 어떤 순서로 어떻게 주는지에 따라 코드 길이나
풀이 방법이 달라질 것 같다.
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
| [프로그래머스|JAVA] 롤케이크 자르기 | Set과 Map 사용 ⭕️ | Set 과 Map 특징 및 시간 복잡도 비교 | 실패한 코드도 같이..📚 (0) | 2025.09.08 |
|---|---|
| [프로그래머스|JAVA] 정수 내림차순으로 정렬하기 | StringBuilder 사용 ⭕️ , 간단 코드, Stream 사용 ❌ (2) | 2025.09.01 |
| [프로그래머스|JAVA] K번째 수 | 정렬 | List 활용 📚 (1) | 2025.08.25 |
| [프로그래머스|JAVA] 시저 암호 | 🌐 아스키코드 값 (유니코드) 활용 | 간단 코드 (1) | 2025.08.25 |
| [프로그래머스|JAVA] 가운데 글자 가져오기 | 간결 & 쉬운 코드 📚 | 간편하게 String 형변환 방법 포함 ⭕️ (2) | 2025.08.25 |
