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

jun5e00·2021년 3월 21일
0

알고리즘

목록 보기
4/6

레벨1만 풀다가 오늘은 레벨2를 풀어보았다.
오늘 풀어본 2번째 문제는 기능개발 이다!!

생각하기

  1. progresses의 각 요소들을 100에서 빼서 progresses에 저장.
  2. Math.ceil을 사용해서 progresses요소 / speeds요소 를 통해 개발 소요일 수 계산
  3. map과 filter를 사용해서 반환하려고 했으나 복잡해서 포기
  4. cnt, prev 변수를 추가하고 progresses의 길이만큼 for문을 돌려서 prev와 curr을 비교하면서 cnt를 조정해서 answer에 push한다.

코드

function solution(progresses, speeds) {
  var answer = [];
  let days = [];
  let cnt = 1;

  progresses = progresses.map((progress) => 100 - progress);
  for (let i = 0; i < progresses.length; i++) {
    days[i] = Math.ceil(progresses[i] / speeds[i]);
  }

  let prev = days[0];
  for (let i = 1; i < days.length; i++) {
    let curr = days[i];
    if (prev >= curr) {
      cnt++;
    } else {
      answer.push(cnt);
      cnt = 1;
      prev = curr;
    }
  }
  answer.push(cnt);
  return answer;
}

레벨 1보다 조금 더 어렵다. ~_~

profile
공부 일기장

0개의 댓글