본문으로 이동
코드패스 by Devin.KR

문제 4634 · 킬로 IV

세탁기 배정 장부

댓글 0
인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms측정하지 않음0000.00%

문제

한 세탁소는 자동 세탁기 K대를 사용한다. 세탁기에는 1번부터 K번까지 서로 다른 번호가 붙어 있다. 영업을 시작하는 시각을 0으로 정하며, 이 시각에는 모든 세탁기가 비어 있다. 오늘 처리할 세탁물 묶음 N개는 이미 접수 순서대로 정리되어 있다. 각 묶음의 세탁 시간은 양의 정수로 주어지며, 어느 세탁기에 넣더라도 같은 시간이 걸린다. 직원은 접수 순서대로 묶음을 하나씩 배정한다. 다음 묶음을 배정할 때는 현재까지 배정된 작업을 모두 마치는 시각이 가장 이른 세탁기를 고른다. 그 시각이 같은 세탁기가 여러 대라면 번호가 가장 작은 세탁기를 고른다. 아직 한 번도 작업을 배정받지 않은 세탁기는 작업을 마치는 시각이 0인 것으로 취급한다. 선택한 세탁기의 기존 작업 완료 시각이 S이고 새 묶음의 세탁 시간이 D라면, 새 묶음은 시각 S에 시작하여 시각 S+D에 완료된다. 직원이 묶음을 배정하는 데 드는 시간과 세탁물을 넣고 꺼내는 시간은 모두 0이다. 배정은 앞으로 수행할 작업을 예약하는 방식이므로, 앞선 묶음의 세탁이 실제로 끝날 때까지 기다렸다가 다음 배정을 결정하는 것은 아니다. 한 번 정한 배정은 나중에 바꾸지 않는다. 세탁소는 이 규칙대로 작성한 장부에서 세 가지 값을 확인하려 한다. 첫 번째는 모든 묶음의 세탁이 끝나는 시각이다. 두 번째는 각 묶음의 완료 시각을 모두 더한 값이다. 세 번째는 접수 순서상 마지막 묶음이 배정된 세탁기의 번호다. 마지막 묶음이 전체 작업 중 가장 늦게 완료되는 묶음이라는 보장은 없다. 세 가지 값을 계산하는 프로그램을 작성한다.

입력

첫째 줄에 정수 N과 K가 주어진다. 1 ≤ N ≤ 20,000, 1 ≤ K ≤ 20,000이다.
둘째 줄에 접수 순서대로 각 묶음의 세탁 시간을 나타내는 정수 D_1, D_2, …, D_N이 주어진다. 모든 i에 대해 1 ≤ D_i ≤ 999이다.

출력

첫째 줄에 모든 묶음의 세탁이 끝나는 시각을 출력한다. 둘째 줄에 N개 묶음 각각의 완료 시각을 모두 더한 값을 출력한다. 셋째 줄에 마지막 묶음이 배정된 세탁기의 번호를 출력한다. 모든 값은 정수로 출력한다.

예제 입력 1

5 2
4 2 3 1 2

예제 출력 1

7
23
1

예제 입력 2

3 5
7 7 1

예제 출력 2

7
15
3

예제 입력 3

4 1
2 1 3 2

예제 출력 3

8
19
1
힌트 펼치기
  • 각 세탁기의 다음 작업 시작 가능 시각과 번호를 함께 최소 힙에 넣는다.

출처: Devin.KR 자체 제작

알고리즘 분류우선순위 큐시뮬레이션

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

JavaScript 시간 제한 = 문제 시간 제한 × 1 + 0초. 문제별 예외는 아래 표에 반영됩니다.

Node.js 전체 API는 지원하지 않습니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      댓글 0

      로그인하면 댓글을 쓸 수 있습니다.

      댓글 접기·펼치기

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      JavaScript브라우저 JavaScript1000ms / 테스트측정하지 않음
      TypeScriptTypeScript 5.9.31000ms / 테스트측정하지 않음
      Python 3Pyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음
      CYoWASP Clang 222000ms / 테스트측정하지 않음
      C++YoWASP Clang 22 / libc++2000ms / 테스트측정하지 않음
      JavaOpenJDK javac + TeaVM (Java 21 문법)3000ms / 테스트측정하지 않음
      LuaWasmoon 1.16.0 / Lua 5.43000ms / 테스트측정하지 않음
      RubyRuby 3.4 / ruby.wasm 2.10.15000ms / 테스트측정하지 않음
      SchemeBiwaScheme 0.8.35000ms / 테스트측정하지 않음
      PrologSWI-Prolog / swipl-wasm 8.2.55000ms / 테스트측정하지 않음
      PerlPerl 5.28 / WebPerl 0.09-beta5000ms / 테스트측정하지 않음