Hayden's Archive

[알고리즘] 프로그래머스 : 기능개발 본문

Algorithm

[알고리즘] 프로그래머스 : 기능개발

_hayden 2021. 2. 21. 01:53

알고리즘 문제 출처 : 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;

public class Solution {

	public int[] solution(int[] progresses, int[] speeds) {
		int[] answer = {};
		Queue<Integer> queue = new LinkedList<Integer>();
		List<Integer> list = new ArrayList<>();
		for(int i=0; i<progresses.length; i++) {
			queue.add(takeDays(progresses[i], speeds[i]));
		}
		while(!queue.isEmpty()) {
			int picked = queue.poll();
			int fnCnt = 1;
			while(!queue.isEmpty()) {
				if(picked >= queue.peek()) {
					queue.poll();
					fnCnt++;
				}else {
					break;
				}
			}
			list.add(fnCnt);
		}
		answer = new int[list.size()];
		for(int i=0; i<answer.length; i++) {
			answer[i] = list.get(i);
		}
		return answer;
	}

	public int takeDays(int progress, int speed) {
		int needs = 100 - progress;
		if(needs % speed == 0) {
			return needs/speed;
		}else {
			return (needs/speed) + 1;
		}
	}
}