JS-algorithm/프로그래머스
[프로그래머스] 기능 개발 (javascript)
yunieyunie
2023. 7. 8. 15:03
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🤔 해결방법
1. 기능별로 완료되기까지 필요한 날 needDay를 구한다.
2. needDay의 각 요소를 비교하며 동일한 날짜에 완료되는 기능 수를 구해 baepo에 추가한다.
🔑 풀이
function solution(progresses, speeds) {
let needDay = []; //기능별로 완료되기까지 필요한 날
let baepo = [];
//기능별로 완료되기까지 필요한 날 구하기
for (let i = 0; i < progresses.length; i++){
let day = Math.ceil((100-progresses[i]) / speeds[i]);
needDay.push(day); // needDay = [5, 10, 1, 1, 20, 1]
}
let compareDay = needDay[0];
let count = 1;
for (let i = 1; i < needDay.length; i++) {
if (needDay[i] > compareDay) {
baepo.push(count);
compareDay = needDay[i];
count = 1;
} else {
count++;
}
}
baepo.push(count); //baepo = [1, 3, 2]
return baepo;
}
만약 현재 날짜(needDay[i])가 compareDay보다 크다면 이전까지 세었던 count 값을 baepo 배열에 추가, compareDay를 현재 날짜로 업데이트하고 count를 1로 초기화한다.
그렇지 않으면, 같은 날짜에 완료되는 기능이므로 count를 증가시킨다.
이 문제는 스택/큐에 관한 문제로 비교적 어렵지 않아 삽질 없이 잘 풀 수 있었다.
다음 포스팅을 보며 스택/큐에 대해 복습했다.
[자료구조] 스택(Stack)과 큐(Queue)에 대해서 알아보자!
📌 스택(Stack)이란 무엇일까? 스택(Stack)은 "쌓다"라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조입니다. 조금 더 설명하자면, 위의 사진과 같이 데이터가 순서대로 쌓이며 가장 마지
jud00.tistory.com