[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=java
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[코드]
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> answer = new ArrayList<>();
int n = progresses.length;
int[] days = new int[n];
// 각 작업에 필요한 날짜 계산
for(int i=0; i<n; i++) {
int percent = 100 - progresses[i];
int day = percent / speeds[i];
if (percent % speeds[i] != 0) {
day++; // 나머지가 있으면 1을 더해줌
}
days[i] = day;
}
// 첫 번째 작업은 최소 1개
int count = 1;
// 첫 작업 배포 날짜
int lastDay = days[0];
for(int i=1; i<n; i++) {
// 첫 작업 배포 날짜랑 작거나 같으면 같은 날 배포
if(days[i] <= lastDay) {
count++;
} else {
// 배포하고
answer.add(count);
// 새로 시작
lastDay = days[i];
count = 1;
}
}
answer.add(count);
return answer.stream().mapToInt(i -> i).toArray();
}
}
[회고]
생각보다 코드짜는게 헷갈리고 쉽지만은 않았습니다.
질문과 피드백은 언제나 환영입니다.
감사합니다.
'CodingTest > Programmers' 카테고리의 다른 글
[Programmers] 프로세스 (0) | 2025.04.07 |
---|---|
[Programmers] 올바른 괄호 (1) | 2025.04.03 |
[Programmers] 베스트앨범 (0) | 2025.04.01 |
[Programmers] 의상 (1) | 2025.03.29 |
[Programmers] 전화번호 목록 (0) | 2025.03.28 |