[프로그래머스] 기능개발 - javsacript
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/42586
📌 풀이
function solution(progresses, speeds) {
var answer = [];
let stack = [];
let cnt = 0;
for (let i = 0; i < progresses.length; i++) {
stack[progresses.length - 1 - i] = Math.ceil(
(100 - progresses[i]) / speeds[i]
);
}
while (stack.length > 0) {
let num = stack.pop();
cnt++;
while (num >= stack[stack.length - 1] && stack.length > 0) {
stack.pop();
cnt++;
}
answer.push(cnt);
cnt = 0;
}
return answer;
}
✔ 전형적인 stack 자료구조를 이용하여 푸는 문제이다.
✔ stack의 끝에서부터 첫번째 progress가 끝나는데 걸리는 일 수를 저장한다.
✔ Math.ceil() 사용하여 (100 - progresses[i]) / speeds[i] 이 소수점이 나온다면 무조건 올림한다.
✔ stack의 top부터 더 큰값을 만나기 전까지 cnt를 1씩 더해주고 큰 값을 만나면 answer에 cnt를 저장한 후 0으로 초기화한다.
✔ 난이도 : 프로그래머스 기준 LEVEL 2
Author And Source
이 문제에 관하여([프로그래머스] 기능개발 - javsacript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ywc8851/프로그래머스-기능개발-javsacript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)