난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42586
알고리즘
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;
}
주저리
스택/큐 문제라는데 그런지는 잘 모르겠다. 입출력 예만 보고는 어렵게 풀뻔했는데 입출력 예 설명 보니까 어떻게 풀어야 할지 감이 와서 시간 별로 안 들이고 풀었다.
'코딩테스트' 카테고리의 다른 글
[JS] [1차] 뉴스 클러스터링 (1) | 2023.12.20 |
---|---|
[JS] 프로세스 (1) | 2023.12.20 |
[JS] 튜플 (1) | 2023.12.12 |
[JS] [1차] 캐시 (0) | 2023.12.11 |
[JS] 의상 (0) | 2023.12.10 |