본문 바로가기
JAVA

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

by Hwoarang757 2021. 8. 9.

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

 

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

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

programmers.co.kr

ㅎ ㅏ............ 너무 어렵습니다 -_-;;;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
    int[] answer = {};

    	if(progresses == null || speeds == null) return answer;

        Queue<Integer> s = new LinkedList<>();

        //System.out.println((100 -95) /4);

        for(int i = 0 ; i < progresses.length ; i++) {
        		s.add((int)Math.ceil((100 - progresses[i]) / (double)speeds[i]));
        }

        System.out.println(s);
        Stack<Integer> rst = new Stack<>();
        Stack<Integer> tmp = new Stack<>();
        tmp.setSize(1);

    	int sum = 0 ;

        while(true) {

        	int cur = s.poll();

        	if(rst.size() == 0) {
        		sum++;
        		tmp.add(cur);
        		rst.add(sum);
        		continue;
        	}

        	int prev = tmp.pop();

        	if(prev >= cur) {
        		tmp.add(prev);

        		int v = rst.pop();
        		rst.add(++v);
        	} else {
        		tmp.add(cur);
        		rst.add(1);
        	}
        	if(s.isEmpty())
        		break;
        }


        return rst.stream().mapToInt(i->i).toArray();
    }
}