코딩 테스트/프로그래머스 level2
기능개발
fullfish
2022. 9. 12. 00:25

코드
function solution(progresses, speeds) {
let result = [];
let temp = [];
let index = 0;
while (temp.length < progresses.length) {
let count = 0;
for (let i = 0; i < progresses.length; i++) {
progresses[i] = progresses[i] + speeds[i];
if (progresses[i] >= 100 && !temp.includes(i)) {
temp.push(i);
}
}
temp = temp.sort((a, b) => a - b);
for (let i = 0; i < temp.length; i++) {
if (temp[i] === index) {
count++;
index++;
}
}
if (count > 0) result.push(count);
}
return result;
}
다른 사람 코드
function solution(progresses, speeds) {
let answer = [0];
let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
let maxDay = days[0];
for (let i = 0, j = 0; i < days.length; i++) {
if (days[i] <= maxDay) {
answer[j] += 1;
} else {
maxDay = days[i];
answer[++j] = 1;
}
}
return answer;
}
며칠이 있어야지 각각의 progress가 완료되는지에 대한 날짜를 미리 구해놓고
어차피 앞에서부터 완료 카운팅을 하므로 해당 코드처럼 for문 한번돌려서 구했다