java 프로그래머스 [스택/큐] _기능개발

2021. 4. 29. 22:24프로그래머스 알고리즘/코딩 테스트 고득점 Kit

반응형

 

출제 링크 : programmers.co.kr/learn/courses/30/lessons/42586

 

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

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

programmers.co.kr

 


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

class Solution {
	public int[] solution(int[] progresses, int[] speeds) {

		Queue<Integer> queue = new LinkedList<Integer>();
		List<Integer> answer = new ArrayList<Integer>();

		for (int i = 0; i < progresses.length; i++) {
			int day = ((100 - progresses[i]) % speeds[i]) > 0 ? ((100 - progresses[i]) / speeds[i]) + 1
					: ((100 - progresses[i]) / speeds[i]);

			queue.add(day);
		}

		int prevFunc = queue.poll();
		int numOfFuncs = 1;
		while (!queue.isEmpty()) {
            // 제일 처음으로 저장된 값 반환
            // (Queue 자체 데이터가 사라지지 않음)
			int curFunc = queue.poll(); 
			if (prevFunc >= curFunc) {
				numOfFuncs++;
			} else {
				answer.add(numOfFuncs);
				numOfFuncs = 1;
				prevFunc = curFunc;
			}
		}
		answer.add(numOfFuncs);

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

 

 

반응형