문제 설명
문제풀이
1. 내가 분 문제 풀이다. 설명은 주석으로 남겨 놓았다.
function solution(progresses, speeds) {
let answer = [];
let finalCount = [];
// 배열 answer에 남은 기간을 나타내는 값을 넣어준다.
for(let i = 0; i <= progresses.length - 1; i ++) {
let j = 1;
while(progresses[i] < 100) {
progresses[i] += speeds[i];
if(progresses[i] >= 100) {
answer.push(j);
}
j++;
}
}
// 남은 기간 answer 배열을 이용하여 뒷 부분에 값을 보고 temp에 개수를 체크해주는 로직이다.
let temp = 1;
let prev = answer[0];
for(let i = 1; i < answer.length; i ++) {
let curr = answer[i];
if(prev >= curr) {
temp += 1;
} else {
finalCount.push(temp);
prev = curr;
temp = 1;
}
}
finalCount.push(temp);
return finalCount;
}
2. 제일 깔끔하고 정확한 모범 답안이다.
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;
}
실행결과
코드 채점하고 제출
확실히 레벨 2가 되니까 레벨 1에서 할 수 있는 능력 +a 를 요구하는 것을 느꼈다.
'프로그래머스 문제 > Level 2' 카테고리의 다른 글
[프로그래머스] 위장 - 자바스크립트 (0) | 2020.09.10 |
---|