코드
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문 한번돌려서 구했다
'코딩 테스트 > 프로그래머스 level2' 카테고리의 다른 글
k진수에서 소수 개수 구하기 (0) | 2022.09.12 |
---|---|
[1차] 뉴스 클러스터링 (0) | 2022.09.12 |
n^2 배열 자르기 (0) | 2022.09.11 |
위장 (0) | 2022.09.11 |
튜플 (0) | 2022.09.11 |