코딩테스트
[JS] 기능개발
미안하다 강림이 좀 늦었다
2023. 12. 18. 19:43
난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘
1. 각 기능의 진도가 100%가 되기까지 며칠이 걸리는지를 배열에 저장한다.
2. 1.의 배열에서 시작 원소를 인덱스를 저장해 놓고, 배열을 순회하며 시작 원소보다 큰 원소가 나오면 해당 원소의 인덱스와 시작 원소의 인덱스 차를 구하여 정답 배열에 넣고, 시작 원소의 인덱스와 시작 원소 값을 업데이트한다.
코드
function solution(progresses, speeds) {
var answer = [];
const publishDate = [];
progresses.forEach((progress, idx) => {
publishDate.push(Math.ceil((100 - progress) / speeds[idx]));
})
let startIdx = 0;
let startDate = publishDate[0];
publishDate.forEach((date, currentIdx) => {
if (date > startDate) {
answer.push(currentIdx - startIdx);
startIdx = currentIdx;
startDate = date;
}
})
answer.push(progresses.length - startIdx);
return answer;
}
주저리
스택/큐 문제라는데 그런지는 잘 모르겠다. 입출력 예만 보고는 어렵게 풀뻔했는데 입출력 예 설명 보니까 어떻게 풀어야 할지 감이 와서 시간 별로 안 들이고 풀었다.