본문 바로가기

Programmers

[프로그래머스] 기능 개발 (JS)

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

내 풀이

function solution(progresses, speeds) {
    const answer = [];
    let idx=0;
    while(idx!==progresses.length){
        for(let i=0; i<progresses.length; i++){
            progresses[i]+=speeds[i];
        }
        if(progresses[idx]>=100){
            let cnt=1;
            for(let i=idx+1; i<=progresses.length; i++){
                if(progresses[i]<100 || i===progresses.length){
                    idx=i;
                    break;
                }
                cnt++;
            }
            answer.push(cnt);
        }
    }
    return answer;
}

 

다른 사람 풀이

function solution(progresses, speeds) {
  const answer = [];
  const days = progresses.map((progress, index) =>
    Math.ceil((100 - progress) / speeds[index])
  );
  let count = 1;
  let maxDay = days[0];

  for (let i = 1; i < days.length; i++) {
    if (days[i] <= maxDay) {
      count++;
    } else {
      maxDay = days[i];
      answer.push(count);
      count = 1;
    }
  }

  answer.push(count);

  return answer;
}

이 풀이가 더 깔끔하고 트렌디한 것 같다.. 더 분발해야겠다

참조

https://yong-nyong.tistory.com/18