Skip to content
On this page

Programmers 42586. 기능 개발

Title
Programmers 42586. 기능 개발
Category
Algorithm
Tags
Aliases
Programmers 42586. 기능 개발
Created
3 years ago
Updated
last year

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

문제 유형난이도걸린 시간해결 유무(✅/❌)
스택/큐lv.21시간

설계 방법

  • progresses 배열을 순회하며 speed 배열을 참조하여 각 기능별 남은 날짜 배열을 만든다.

  • 남은 날짜 배열을 reduce로 순회하며, 함께 배포되어야 할 기능들은 deploys ( 스택)에 쌓는다.

  • deploys 의 길이를 answer 에 담아가며 답을 완성한다.

코드

javascript
function solution(progresses, speed) {
	const answer = [];

	const deploys = progresses
		.map((progress, i) => Math.ceil((100 - progress) / speed[i]))
		.reduce((deploys, feature) => {
			if (deploys.length === 0) {
				deploys.push(feature);
			} else if (deploys[0] >= feature) {
				deploys.push(feature);
			} else {
				answer.push(deploys.length);
				deploys = [feature];
			}
			return deploys;
		}, []);

	answer.push(deploys.length);

	return answer;
}
function solution(progresses, speed) {
	const answer = [];

	const deploys = progresses
		.map((progress, i) => Math.ceil((100 - progress) / speed[i]))
		.reduce((deploys, feature) => {
			if (deploys.length === 0) {
				deploys.push(feature);
			} else if (deploys[0] >= feature) {
				deploys.push(feature);
			} else {
				answer.push(deploys.length);
				deploys = [feature];
			}
			return deploys;
		}, []);

	answer.push(deploys.length);

	return answer;
}

시간 복잡도

O(n)

어려웠던 점

  • 처음에 큐를 사용하려고 했다가 꼬였었다.

  • 마지막에 남은 deploys 를 답에 추가해야 된다는걸 깜빡했다.

참고자료

Released under the MIT License.