문제 4135 · 바이트 II
스마트 홈의 수신 창
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
스마트 홈의 센서들은 정해진 시각에 상태 보고를 전송한다. 중앙 수신기는 평소에는 잠들어 있으며, 수신 창을 열어 둔 동안에만 보고를 받을 수 있다. 관리자는 하루 동안 예정된 모든 보고를 받으면서 수신 창을 여는 횟수를 최소화하려 한다. 보고가 전송되는 시각은 모두 미리 알려져 있지만 입력에는 시각순으로 정리되어 있지 않다. 수신 창을 정수 시각 s에 열면 s 이상 s+D 이하의 모든 시각에 전송되는 보고를 받을 수 있다. 양 끝 시각도 수신 범위에 포함된다. 예를 들어 D가 4이고 시각 7에 창을 열면 시각 7과 11의 보고를 모두 받을 수 있지만 시각 12의 보고는 받을 수 없다. 수신 창의 길이는 언제 열어도 같은 D이며, 보고를 받았다는 이유로 일찍 닫거나 수신 범위를 늘릴 수 없다. 수신 창을 여는 시각 s는 0 이상의 정수 중에서 자유롭게 선택한다. 센서의 보고 시각과 같아도 되고 달라도 된다. 창은 여러 번 열 수 있고, 서로 다른 창의 수신 범위가 겹쳐도 된다. 하나의 창은 범위 안에 들어오는 보고를 개수 제한 없이 받을 수 있다. 따라서 여러 센서가 같은 시각에 보고하더라도 그 시각을 포함하는 창 하나면 충분하다. 모든 보고는 적어도 하나의 수신 창에 포함되어야 하며, 보고를 누락하거나 전송 시각을 바꾸는 것은 허용되지 않는다. 보고가 하나 이상 주어지므로 항상 하나 이상의 창이 필요하고, 각 보고 시각에 창을 열면 언제나 모든 보고를 받을 수 있다. 최적의 창 배치가 여러 가지여도 배치 자체는 출력하지 않는다. 필요한 수신 창 개수의 최솟값만 구한다.
입력
첫째 줄에 보고 수 N과 수신 범위 길이 D가 공백으로 주어진다. N과 D는 정수이며 1≤N≤100000, 0≤D≤1000000000이다. 둘째 줄에 N개의 보고 시각 t가 공백으로 주어진다. 각 t는 0≤t≤1000000000인 정수이다. 시각은 중복될 수 있으며 임의의 순서로 주어진다.
출력
모든 보고를 받을 수 있는 수신 창 개수의 최솟값을 정수 하나로 출력한다.
예제 입력 1
7 4 12 3 7 11 3 18 16
예제 출력 1
3
예제 입력 2
5 0 9 2 9 2 9
예제 출력 2
2
예제 입력 3
4 10 10 0 5 10
예제 출력 3
1
힌트 펼치기
- 아직 받지 못한 보고 중 가장 이른 시각을 생각한다.
- 가장 이른 보고 시각에 창을 열면 그 보고를 받으면서 오른쪽으로 가장 멀리 도달한다.
관련 서재 장
알고리즘 분류
그리디정렬풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |