본문 바로가기

알고리즘

프로그래머스 - 기능개발(Python)

반응형

문제 설명

알고리즘 고민

작업에는 순서가 있고 앞의 작업이 완료되지 않으면 그 다음 작업이 완료되어도 앞의 작업이 완료될 때까지 기다려야 한다. 먼저 작업이 완료될 때까지 걸리는 시간을 작업별로 정렬한다. 이후 반복문을 돌면서 첫 번째 작업과 비교하며 첫 번째 작업보다 걸리는 시간이 짧으면 작업 변수에 하나를 더한다. 첫 번째 작업보다 더 큰 작업을 만나면 포인터를 더 큰 작업으로 설정하고 작업 변수를 answer 배열에 추가하고 1로 초기화한다. 1로 초기화하는 이유는 큰 작업은 아직 처리하지 않았기에 작업 변수를 1로 초기화한다. 만약 반복문을 모두 돌았다면 마지막 변수가 남았으므로 의무적으로 answer 배열에 작업 변수를 추가한다.

코드

 

더 고민한 점

작업이 완료될 때까지 필요한 일 수를 저장한 배열을 k로 해두었다. 총 100%에서 progresses만큼 빼고 나머지가 있을 경우를 처리하는 방법을 고민해보았는데 bool 자료형을 사용하여 만약 나머지가 있는 경우는 모두 1로 변환하도록 하여 나름 깔끔하게 처리한 것 같다.
반응형