내 기억으론 Level 2 테스트에서 이 문제가 나왔던 것같다.
key와 value를 함께 사용해서 정렬하고 풀고싶었는데, 머릿속에서 희미하게 떠오르기만 하고 제대로 구현되지 않아 결국 두 문제 중 한 문제밖에 못 맞고 저건 틀린 기억이 난다.
문제의 요지는 이렇다.
앞의 기능개발이 뒤의 기능개발보다 늦을 경우, 뒤의 기능을 먼저 출시할 수는 없다.
반드시 앞의 기능부터 출시되어야하며, 그동안 미리 완성된 뒤의 기능은 그 때 함께 출시한다.
이때 차례로 출시되는 기능의 개수를 배열로 나타낸다. 걸린 일수까지는 출력할 필요가 없다.
pop을 이용할 것이기 때문에 while문의 조건으로 progress 배열의 개수가 0 이상일때 반복문을 계속 하겠다고 조건을 달았다.
맨 앞의 기능이 완성되는 경우 맨 앞의 항목을 pop한다. 이 때 speed도 함께 pop한다.
progress와 speed는 하나의 원소당 key와 value처럼 짝이기 때문이다.
cnt는 time당 완성된 기능의 개수이다. 따라서 기능이 완성되면 cnt를 +1해준다.
반대로 pop된 이후 맨 앞으로 온 기능이 미완성 된 경우, 앞서 완성된 기능은 먼저 내보내주고
완성 기능 개수 cnt를 0으로 reset해준다.
앞에 완성된 기능이 없으면 시간이 더 필요한 것이기 때문에 완성되는 기능이 발생할 때까지 time을 증가시킨다.
이렇게 되면 마지막 원소에 다다랐을 때 완성된 기능을 마지막으로 출시하는 날의 cnt 개수를 append하지 못하고
while문이 종료될 수 있다. 왜냐하면 else문에서만 answer.append가 이루어지기 때문이다.
따라서 while문이 종료된 시점에서 반복문 밖에서 나머지 cnt를 한 번 더 append 해줘야한다.
'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 12973번 (0) | 2022.06.15 |
---|---|
[프로그래머스] 42883번 (0) | 2022.06.15 |
[프로그래머스] 42747번 (0) | 2022.06.15 |
[프로그래머스] 12903번 (0) | 2022.06.15 |
[프로그래머스] 77884번 (0) | 2022.06.15 |