본문 바로가기
CodingTest/Programmers

[Programmers] 기능개발

by 창브로 2025. 4. 3.

[문제 링크]

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