본문 바로가기

■ 알고리즘 문제 풀이/프로그래머스

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

▶문제설명

코딩테스트 연습 > 스택/큐 > 기능개발

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










▶ 설계


0%로 시작하고 하루에 1%를 채울 수 있는 작업이 있다면 100일이 필요하다.

그러므로 100번 반복하는 루프문 안에서 구현을 이어나가면 되겠다.


완료된 작업이 있는지 확인하기 위한 구간을 beginend로 나타낸다. [begin, end)

매일 begin에서부터 연속되어 있는 진행률 100% 이상의 작업들을 확인하고 answer에 추가한 뒤, begin을 업데이트 해주자.



▶ 구현


하루가 지날 때마다 입력으로 주어진 모든 작업들을 주어진 속도에 맞추어 진행률을 업데이트했다.

그리고 begin에 위치한 작업이 100% 이상이 된 경우에 begin에 위치한 작업에서부터 차례대로 보면서 연속되어있는 100%이상의 진행률을 가진 작업들의 개수를 카운트했다.

answer에 카운팅한 수(cnt)를 push_back 해준 뒤, begin에 cnt만큼을 더한다.

그러면 begin은 아직 진행률이 100% 미만인 작업들 중 가장 앞에 위치한 작업의 위치가 된다.

그렇게 모든 작업들이 100% 진행률 이상이 될 때까지 반복하여 문제를 해결했다.