코딩 테스트/프로그래머스 level2

기능개발

fullfish 2022. 9. 12. 00:25

코드

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