작업을 번호 순서대로 원형 대기열에 넣어요. 맨 앞 작업을 꺼내 최대 quantum 단위만큼 처리해요. 작업이 끝나면 완료 번호를 기록하고, 남은 작업이 있으면 대기열 맨 뒤에 다시 넣어요. 대기열에서 작업 하나를 꺼내 처리하는 것을 1회로 세어요. 최대 turnLimit회 처리한 뒤 멈추고, 그때까지 끝난 작업의 번호만 완료 순서대로 반환해요. 모든 작업이 먼저 끝나면 바로 멈춰요.
vector<int> solution(vector<int> remaining, int quantum, int turnLimit)가 요구한 값을 반환하도록 빈칸을 채워 주세요.
매개변수와 반환값
remaining의 길이는 030, 각 작업량은 120이에요. quantum은 15, turnLimit은 0600인 정수예요. 작업 번호는 1부터 길이까지예요. 반환 벡터에는 제한 횟수 안에 완료된 번호만 정확히 한 번 나타나요. 제한 횟수 뒤에도 남은 작업은 포함하지 않아요. 빈 입력 또는 turnLimit=0이면 빈 벡터예요.
예시
remaining={5, 2, 4}, quantum=2, turnLimit=4이면{2}를 반환해요. 처음 세 번에 1번은 3, 2번은 0, 3번은 2가 남아요. 네 번째에는 1번이 다시 처리되어 1이 남고, 완료된 번호는 2번뿐이에요.remaining={1, 4, 2}, quantum=3, turnLimit=4이면{1, 3, 2}를 반환해요. 처음 세 번에 1번과 3번이 끝나고, 네 번째에 2번의 남은 1을 처리해요. 마지막 허용 횟수에 끝난 작업도 포함해요.
실행용 입출력
첫 줄에 작업 수 n, quantum, turnLimit을 입력하고, 다음 줄에 작업량 n개를 입력해요. 반환 번호를 공백으로 구분해 출력하고, 빈 반환값은 빈 줄로 출력해요. main은 입력을 매개변수로 바꾸고 반환값을 출력하는 채점 하네스예요. 풀이 대상은 solution과 제공된 보조 함수의 빈칸이에요.
예시 입력
3 2 4 5 2 4
예상 결과
2
예시 입력
3 3 4 1 4 2
예상 결과
1 3 2
핵심 개념
stack-queue: 먼저 들어온 항목과 다시 대기하는 항목을 구분해요.loops: 다음 반복으로 이어지는 상태를 확인해요.stl-vector: 벡터의 크기와 인덱스로 매개변수를 읽어요.