[JAVA/프로그래머스] LV.2 기능개발

윤소영·2023년 6월 21일
0

JAVA

목록 보기
23/41

문제

답안 코드

import java.util.*;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] remain = new int[speeds.length];
        ArrayList<Integer> day = new ArrayList<Integer>();
        for(int i = 0; i < progresses.length; i++){
            if((100 - progresses[i]) % speeds[i] == 0)
                remain[i] = (100 - progresses[i]) / speeds[i];
            else
                remain[i] = (100 - progresses[i]) / speeds[i] + 1;
            System.out.println(remain[i]);
        }
        int p = 1;
        for(int i = 1; i < remain.length; i++){
            if(remain[i-1] >= remain[i]){
                p++;
                remain[i] = remain[i-1];
            }
            else if(remain[i-1] < remain[i]){
                day.add(p);
                p = 1;
            }
        }
        day.add(p);
        int[] answer = new int[day.size()];
        for(int i = 0; i <day.size(); i++){
            answer[i] = day.get(i);
        }
        
        return answer;
    }
}

코드 풀이

일단 걸리는 일을 배열로 구해주고, 크기 미지정인 list 하나를 선언해준 후 배열에서 i-1과 비교해 i가 더 크면 1을 list에 넣어주고 i가 더 작으면 i가 더 커질 때까지 p를 1씩 증가.
i가 다시 커지면 p를 list에 넣어주기.
p를 언제 넣어줘야하는지 때문에 고민 했던 문제.

0개의 댓글