Skip to content

Latest commit

 

History

History

혜은

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

프로그래머스 기능 개발

문제 )

  • 기능은 진도가 100%일 때 서비스에 반영
  • 각 기능의 개발속도는 모두 다르며 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포
  • 예를 들어 progresses가 [93, 30, 55], speeds가 [1, 30, 5]로 주어졌다. 첫 번째 기능은 93% 완료되어 있고 하루에 1%씩 작업이 가능하므로 7일간 작업 후 배포가 가능하다. 두 번째 기능은 30%가 완료되어 있고 하루에 30%씩 작업이 가능하므로 3일간 작업 후 배포가 가능하다. 하지만 이전 첫 번째 기능이 아직 완성된 상태가 아니기 때문에 첫 번째 기능이 배포되는 7일째 배포된다. 세 번째 기능은 55%가 완료되어 있고 하루에 5%씩 작업이 가능하므로 9일간 작업 후 배포가 가능하다.

따라서 7일째에 2개의 기능, 9일째에 1개의 기능이 배포되므로, return은 [2, 1]이 된다.

해결과정) 먼저 작업기간을 구하고 배열에 담는다. 그리고 앞의 요소가 뒤 요소보다 크거나 같으면 index[i]번째에 1을 더해주고, 그렇지 않은 경우엔 배열의 뒤에 1을 넣어주고 indexNum에 1을 더한다. 이렇게 반복하면 원하는 배열이 나올 것이다!

작업기간은 (100 - 작업의 진도) / (작업의 개발 속도)에 반올림을 해서 구했다. for문으로 반복문을 돌려 주어진 배열들의 모든 원소를 순회하도록 했고, 얻어낸 값들은 새로운 배열에 담아줬다.

그리고 어떤 경우에도 answer의 첫번째 요소는 1 이상이므로 push를 사용해 배열에 1을 담았다.

마찬가지로 for문으로 각 원소를 순회했다. 전의 요소가 후의 요소보다 크거나 같을 때는 answer 배열의 현 인덱스의 요소에 1을 더한다. 반대로 전의 요소가 후의 요소보다 작을 때는 answer 배열에 새롭게 1을 넣고, 인덱스 넘버에 1을 더한다.