[Programmers] 기능개발 - 스택/큐

동민·2021년 3월 11일
import java.util.LinkedList;
import java.util.Queue;

// 기능개발 - 스택/큐
public class FunctionDev {
	public int[] solution(int[] progresses, int[] speeds) {

		LinkedList<Integer> list = new LinkedList<>(); // 리턴값을 저장할 리스트
		Queue<Integer> queue = new LinkedList<>(); // 각 작업당 걸리는 날짜를 저장할 큐

		for (int i = 0; i < progresses.length; i++) {
			queue.offer((int) Math.ceil((double) (100 - progresses[i]) / speeds[i])); // 각 작업당 걸리는 날짜를 큐에 저장
		}

		int count = 1, ele = queue.poll();
		while (!queue.isEmpty()) {

			if (ele >= queue.peek()) {
				count++; // 기능의 개수 증가
				queue.poll();
			} else {
				list.add(count);
				count = 1;
				ele = queue.poll();
			}
		}
		list.add(count);

		return list.parallelStream().mapToInt(i -> i.intValue()).toArray();
	}

	public static void main(String[] args) {

		FunctionDev s = new FunctionDev();

		int[] progresses = { 93, 30, 55 };
		int[] speeds = { 1, 30, 5 };

		s.solution(progresses, speeds); // [2,1]

	}

}
Math.ceil() : 올림(return type : double)
Math.floor() : 버림(return type : double)
Math.round() : 반올림(return type : double)
stack.clear(), queue.clear() : 스택 또는 큐를 비움
profile
BE Developer

0개의 댓글