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

문제 4043 · 바이트 V

세탁소의 적립 도장

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 세탁소는 손님이 맡긴 옷의 수만큼 도장을 적립하고, 도장 K개마다 할인권 한 장을 발급한다. 세탁소는 새 적립 행사를 시작한 날부터 N일 동안 한 손님의 이용 기록을 정리하려 한다. 행사 시작 직전에 이 손님이 가진 도장은 0개이며, 할인권을 발급하는 데 사용한 도장은 다시 사용할 수 없다. 각 날짜의 영업이 끝나면 그날 맡긴 옷의 수만큼 도장을 한꺼번에 추가한다. 이어서 남아 있는 도장이 K개 이상인 동안 도장 K개를 없애고 할인권 한 장을 발급하는 일을 반복한다. 따라서 하루에 할인권이 여러 장 발급될 수도 있다. 그날 할인권을 모두 발급한 뒤 남은 도장은 다음 날로 그대로 넘어간다. 옷을 한 벌도 맡기지 않은 날에도 날짜는 하루 지난 것으로 센다. 예를 들어 K가 7이고 전날까지 남은 도장이 5개일 때, 오늘 옷을 18벌 맡겼다면 도장은 모두 23개가 된다. 오늘 할인권 세 장을 발급하면서 도장 21개를 사용하므로, 다음 날로 넘어가는 도장은 2개다. 이전 날짜에 발급한 할인권은 오늘 발급한 장수에 포함하지 않는다. 세탁소가 알고 싶은 것은 할인권을 가장 많이 발급한 날짜와 그날 발급한 장수다. 날짜는 행사 첫날을 1일로 하여 차례대로 번호를 붙인다. 가장 많은 장수를 발급한 날짜가 여러 개라면 가장 이른 날짜를 고른다. 단, N일 동안 할인권을 한 장도 발급하지 않았다면 고른 날짜와 그날의 장수를 모두 0으로 기록한다. 이 경우에도 마지막 날에 남은 도장은 따로 계산한다. N일 동안 매일 맡긴 옷의 수가 주어질 때, 위 규칙에 따라 고른 날짜, 그날 발급한 할인권의 장수, N일째 영업이 끝난 뒤 남은 도장의 수를 구하는 프로그램을 작성한다.

입력

첫째 줄에 정수 N과 K가 공백으로 구분되어 주어진다. N은 기록한 날짜 수이고 K는 할인권 한 장에 필요한 도장 수다. (1 ≤ N ≤ 30,000, 1 ≤ K ≤ 1,000,000,000)
둘째 줄에 정수 A_1, A_2, …, A_N이 공백으로 구분되어 주어진다. A_i는 i일째 맡긴 옷의 수다. (0 ≤ A_i ≤ 10,000)
입력으로 주어지는 모든 수는 정수다.

출력

고른 날짜, 그날 발급한 할인권의 장수, 마지막에 남은 도장의 수를 이 순서대로 공백으로 구분하여 한 줄에 출력한다. 할인권이 한 장도 발급되지 않았다면 앞의 두 수는 모두 0이다.

예제 입력 1

5 7
5 18 1 20 5

예제 출력 1

2 3 0

예제 입력 2

4 20
3 0 4 2

예제 출력 2

0 0 9

예제 입력 3

3 4
0 10 3

예제 출력 3

2 2 1
힌트 펼치기
  • 전날 남은 도장에 오늘 적립한 도장을 더한 뒤, K로 나눈 몫과 나머지를 이용한다.
  • 오늘 발급한 장수가 지금까지의 최댓값보다 클 때만 날짜를 바꾸면 가장 이른 날짜가 유지된다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류구현반복누적

풀이 작성

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

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

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

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

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

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

    이 브라우저의 연습 기록

      언어별 제한

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

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)