[알고리즘/프로그래머스] JavaScript 스택/큐 기능개발

김효선·2021년 2월 21일
0

문제풀이

목록 보기
1/1

프로그래머스의 스택/큐 Level2의 기능개발 문제이다.

처음 풀었던 코드는

function solution(progresses, speeds) {
  let answer = [];
  answer = [0];
  let day = [];

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

  for (let i = 0, j = 0; i < day.length; i++) {
    if (day[i] <= day[0] || day[i] <= day[i - 1]) {
      answer[j] += 1;
    } else {
      answer[++j] = 1;
    }
  }
  return answer;
}

이것이었는데 제출 후 채점하기를 하면 2,3,4,7,9,10 번 테스트는 자꾸 실패로 떠서 다시 풀어야했다.ㅜㅠ
어떤 테스트 케이스를 추가해봐도 오류를 찾을 수가 없어서...

function solution(progresses, speeds) {
  let answer = [];
  let days = [];
  let count = 1;
  let compareIndex = 0;

  for (let i = 0; i < progresses.length; i++) {
    days[i] = Math.ceil((100 - progresses[i]) / speeds[i]);
  }
  for (let i = 1; i < days.length; i++) {
    if (days[compareIndex] >= days[i]) {
      count++;
    } else {
      answer.push(count);
      count = 1;
      compareIndex = i;
    }
    if (i === days.length - 1) {
      answer.push(count);
    }
  }
  return answer;
}
function solution(progresses, speeds) {
  let answer = [];

  while (progresses.length) {
    for (let i = 0; i < progresses.length; i++) {
      if (progresses[i] < 100) {
        progresses[i] += speeds[i];
      }
    }
    if (progresses[0] >= 100) {
      let count = 0;
      while (progresses[0] >= 100) {
        progresses.shift();
        speeds.shift();
        count++;
      }
      answer.push(count);
    }
  }
  return answer;
}
profile
차근차근 나아가는 주니어 프론트엔드 개발자

0개의 댓글