본문 바로가기
알고리즘/프로그래머스

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

by 1two13 2023. 3. 21.
728x90
반응형

문제 링크


 

프로그래머스

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

programmers.co.kr

 

 

조건


  • 진도가 100%이상 일 때 서비스에 반영할 수 있다.
  • 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다. 

 

나의 정답 코드


function solution(progresses, speeds) {
  // 각 배포마다 몇 개의 기능이 배포되는지
  let answer = [];
  let days = [];
  let memo = 1;

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

  for (let j = 0; j < days.length; j++) {
    if (memo < days[j]) {
      answer.push(1);
      memo = days[j];
    } else answer[answer.length - 1] += 1;
  }

  return answer;
}

다시 풀었을 때 맞아서 기분이 좋았다! ㅎㅎ

 

 

 

다른 분 정답 코드


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;
}

전위 증가로 코드를 구현한 것을 기억하고 싶어서 기록했다. 요 방법 아주 기억해둘만 하다. 

전위 연산자는 연산을 먼저 수행한 뒤에 변수를 할당한다. 

 

내 코드와 다르게 for문을 쓰지 않고 map으로 사용했다. 이게 더 좋다! 효율성 부분에서

반응형

 


질문이나 잘못된 점은 댓글로 남겨주세요 :)💖

728x90
반응형

댓글