프로그래머스의 스택/큐 Level2의 기능개발 문제이다.
처음 풀었던 코드는
function solution(progresses, speeds) {
let answer = [];
answer = [0];
let day = [];
for (let i = 0; i < progresses.length; i++) {
day[i] = Math.ceil((100 - progresses[i]) / speeds[i]);
}
for (let i = 0, j = 0; i < day.length; i++) {
if (day[i] <= day[0] || day[i] <= day[i - 1]) {
answer[j] += 1;
} else {
answer[++j] = 1;
}
}
return answer;
}
이것이었는데 제출 후 채점하기를 하면 2,3,4,7,9,10 번 테스트는 자꾸 실패로 떠서 다시 풀어야했다.ㅜㅠ
어떤 테스트 케이스를 추가해봐도 오류를 찾을 수가 없어서...
function solution(progresses, speeds) {
let answer = [];
let days = [];
let count = 1;
let compareIndex = 0;
for (let i = 0; i < progresses.length; i++) {
days[i] = Math.ceil((100 - progresses[i]) / speeds[i]);
}
for (let i = 1; i < days.length; i++) {
if (days[compareIndex] >= days[i]) {
count++;
} else {
answer.push(count);
count = 1;
compareIndex = i;
}
if (i === days.length - 1) {
answer.push(count);
}
}
return answer;
}
function solution(progresses, speeds) {
let answer = [];
while (progresses.length) {
for (let i = 0; i < progresses.length; i++) {
if (progresses[i] < 100) {
progresses[i] += speeds[i];
}
}
if (progresses[0] >= 100) {
let count = 0;
while (progresses[0] >= 100) {
progresses.shift();
speeds.shift();
count++;
}
answer.push(count);
}
}
return answer;
}