본문 바로가기
알고리즘/programmers

42586: 기능개발[스택/큐]

by cjw.git 2021. 1. 5.

Link : programmers.co.kr/learn/courses/30/lessons/42586


1. 문제

  • 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
    또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
    먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.

 


2. 문제의 조건

  • 작업 갯수 <= 100
  • 작업 진도 < 100
  • 작업 속도 <= 100

 


더보기

3. 문제 접근

  • 시간 복잡도

    추후 보강

 

  • 아이디어

    하루에 단 한번만 배포가 가능하지만, 만약 2~번째 작업이 배포 준비가 되어도 1번째 배포 작업이 준비가 안되면 2~은 대기할 수 밖에 없습니다. 그러므로 모든 진행률에 진행속도를 더하여 0번째 작업이 100이 될 때 까지 반복하며 pop하는 아이디어입니다.

 


4. 풀이 방법

  • 모든 progresses에 각 작업의 speeds를 모두 더해줍니다.
  • 현재의 0번째부터 작업이 완료 된 것이 있으면 stack에 추가하는데, 100퍼가 안되어있다면 break로 바로 탈출합니다.
    (이후 작업이 100이 되어도 현재 작업이 끝나지 않으면 배포가 안된다는 가정 떄문)
  • 만약 배포 할 작업이 있으면 각각의 배포 정보를 삭제하고 삭제된 stack의 수를 넣어줍니다.

    현재 소스에선 reverse 후 pop을 이용하는데, reverse를 안 할 경우, idx 1, 2를 삭제 할 경우 [1,2,3] 
    idx1인 2가 삭제 되면 [1,3]이 남고 pop(2) 를 하면 out of range Exception이 발생하므로 사용자의 역량에 맞춰 수정하셔도 됩니다.

 


5. 소스코드

 


 

cjw.git@gmail.com

'알고리즘 > programmers' 카테고리의 다른 글

42885: 구명보트[그리디]  (0) 2021.01.05
42583: 다리를 지나는 트럭[스택/큐]  (0) 2021.01.05
42584: 주식가격[스택/큐]  (0) 2021.01.05
42579: 베스트앨범[해시]  (0) 2021.01.05
42578: 위장[해시]  (0) 2021.01.05

댓글