개발자 첫걸음/프로그래머스

프로그래머스 [level2] 기능개발

프로아마추어 2021. 12. 21. 11:37

https://programmers.co.kr/learn/courses/30/lessons/42586?language=java 

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

<문제>

 

<나의 풀이>

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] answer = {};
        List<Integer> list = new ArrayList<>();
        
        for(int i=0;i<progresses.length;i++) {
            int check = 100-progresses[i];
            progresses[i] = (int)Math.ceil(((double)check/speeds[i])); // 반올림처리
        }
        
        int cnt=1;
        int temp=progresses[0];
        
        for(int i=0;i<progresses.length-1;i++) {
            if(temp>=progresses[i+1]) { // 배포일이 크거나 같을 때
                cnt++;
            } else if(temp<progresses[i+1]){
                list.add(cnt);
                cnt=1;
                temp=progresses[i+1];
            }
            
            if(i==progresses.length-2) {
                list.add(cnt);
            }
        }
        
        cnt=0;
        answer = new int[list.size()];
        
        for(int i:list) {
            answer[cnt]=i;
            cnt++;
        }
        
        return answer;
    }
}

스택/ 큐를 어떻게 응용할 지 몰라 배열로 문제를 풀었다... 처음에 반올림처리, 배포일이 같은 경우를 고려하지 않아 에러가 발생했었다.

 

<제출결과>

 

 

<큐를 사용한 다른 사람의 풀이>