처리할 작업을 번호 1부터 차례로 대기열에 넣어요. 앞 작업에서 최대 quantum만큼 처리하고, 작업이 남았으면 대기열 뒤로 보내요. 작업이 끝나면 대기열에서 빠져요. 실제 처리한 양만큼 시간이 지나고 작업 사이의 추가 시간은 없어요.
각 작업의 완료 시각에 그 작업 번호를 곱해 모두 더해요. int solution(vector<int> work, int quantum)의 세 빈칸을 채워 주세요. 처음 work[i]는 i+1번 작업의 전체 처리량이에요.
작업 수는 020, 각 처리량은 1100, quantum은 1~10이에요. 같은 처리량도 별도 작업이에요. 빈 배열이면 0, 반환형은 int예요. 동시에 두 작업을 처리하지 않으므로 각 완료 시각은 하나씩 정해져요.
예시 1: work = {3, 1, 2}, quantum = 2 → 27. 1번을 2만큼 처리한 뒤 2번은 시간 3에, 3번은 시간 5에 끝나요. 1번은 시간 6에 끝나므로 1×6+2×3+3×5=27이에요.
예시 2: work = {4, 4}, quantum = 3 → 23. 처음 각각 3만큼 처리해 시간 6이 되고, 1번이 시간 7, 2번이 시간 8에 끝나 7+16=23이에요.
실행 입력은 N quantum과 다음 줄의 작업량 N개예요. N=0이면 작업량 줄은 없어도 돼요. main은 하네스이며 합을 출력해요.
예시 입력
3 2 3 1 2
예상 결과
27
예시 입력
2 3 4 4
예상 결과
23
핵심 개념
stack-queue: 가장 최근 상태와 먼저 들어온 상태를 구분해요.function-design: 보조 함수의 계약과 결과 조합을 확인해요.counting-aggregation: 같은 대상이 중복 집계되지 않도록 해요.