프로그래머스-기능개발[자바]

워니·2024년 6월 9일

문제

처음엔 Queue로 구현했지만 List로 해도 무방할 것 같아서 List로 풀이해보았다.
1시간 넘게 해멨는데 그 이유는, 첫 요소와 다른 요소들을 비교했어야 하는데, 직전 요소와 다음 요소를 비교해서(...) 계속 오답이 나왔었다 ㅠㅠㅠ

if(timeline[i-1] >= timeline[i]) {...}
-->
if(max_ele >= timeline[i]) {...}

그 부분만 수정했더니 통과

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] timeline = new int[progresses.length];
        for(int i = 0; i < progresses.length; i++) {
            timeline[i] = (int)Math.ceil((100-progresses[i]) * 1.0 / speeds[i]);
        }
        
        List<Integer> lst = new ArrayList<>();
        int cnt = 1;
        int max_ele = timeline[0];
        for(int i = 1; i < timeline.length; i++) {
            if(max_ele >= timeline[i]) {
                cnt++;
            } else  {
                lst.add(cnt);
                cnt = 1;
                max_ele = timeline[i];
            }
            if(i == timeline.length-1) {
                    lst.add(cnt);
                }
            
        }
        
        int[] answer = new int[lst.size()];
        for(int i = 0; i < lst.size(); i++) {
            answer[i] = lst.get(i);
        }
        
        
        return answer;
    }
}
profile
매일, 조금씩 나아가는중

0개의 댓글