← 실전 문제

정해진 횟수 안에 끝난 작업

C++빈칸 채우기

작업을 번호 순서대로 원형 대기열에 넣어요. 맨 앞 작업을 꺼내 최대 quantum 단위만큼 처리해요. 작업이 끝나면 완료 번호를 기록하고, 남은 작업이 있으면 대기열 맨 뒤에 다시 넣어요. 대기열에서 작업 하나를 꺼내 처리하는 것을 1회로 세어요. 최대 turnLimit회 처리한 뒤 멈추고, 그때까지 끝난 작업의 번호만 완료 순서대로 반환해요. 모든 작업이 먼저 끝나면 바로 멈춰요.

vector<int> solution(vector<int> remaining, int quantum, int turnLimit)가 요구한 값을 반환하도록 빈칸을 채워 주세요.

매개변수와 반환값

remaining의 길이는 030, 각 작업량은 120이에요. quantum은 15, turnLimit은 0600인 정수예요. 작업 번호는 1부터 길이까지예요. 반환 벡터에는 제한 횟수 안에 완료된 번호만 정확히 한 번 나타나요. 제한 횟수 뒤에도 남은 작업은 포함하지 않아요. 빈 입력 또는 turnLimit=0이면 빈 벡터예요.

예시

  1. remaining={5, 2, 4}, quantum=2, turnLimit=4이면 {2}를 반환해요. 처음 세 번에 1번은 3, 2번은 0, 3번은 2가 남아요. 네 번째에는 1번이 다시 처리되어 1이 남고, 완료된 번호는 2번뿐이에요.
  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: 벡터의 크기와 인덱스로 매개변수를 읽어요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기