문제 4700 · 킬로 IV
택배 이송 센서의 순간 튐
댓글 0| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms | 측정하지 않음 | 0 | 0 | 0 | 0.00% |
문제
택배 상자를 옮기는 이송 장치에는 일정한 간격으로 진동 수준을 측정하는 센서가 달려 있다. 센서는 측정 결과를 0부터 99까지의 정수로 저장한다. 상자의 이동 상태를 확인하는 프로그램은 시간순으로 모인 N개의 측정값을 받아 하루의 진동 지표를 계산한다. 그런데 연결부를 지나는 순간 센서 값이 짧게 튀는 일이 있어, 지표를 계산하기 전에 정해진 규칙으로 측정값을 보정하려 한다. 측정값에는 시간순으로 1번부터 N번까지 번호가 붙어 있다. 양쪽에 이웃이 있는 i번 측정값에 대해서는 원본의 i-1번, i번, i+1번 값을 작은 순서로 나열한다. 이때 두 번째에 놓인 값을 i번 위치의 기준값이라고 한다. 같은 수가 여러 번 나타나도 각각 별개의 값으로 세므로, 세 값 중 둘 이상이 같다면 그 수가 기준값이 된다. 원본의 i번 값과 기준값의 차이에 절댓값을 취한 결과가 정수 기준 T보다 클 때만 i번 값을 이상치로 판단한다. 차이가 T와 같으면 이상치가 아니다. 이상치로 판단한 위치의 값은 해당 위치의 기준값으로 바꾸고, 이상치가 아닌 위치의 값은 그대로 둔다. 이 규칙은 값이 위로 튀는 경우와 아래로 튀는 경우에 똑같이 적용한다. 모든 위치의 판단과 기준값 계산에는 반드시 보정 전 원본 배열을 사용한다. 앞선 위치를 보정한 결과가 다음 위치의 판단에 영향을 주어서는 안 되며, 전체 보정은 한 번만 수행한다. 첫 번째와 마지막 측정값은 양쪽 이웃이 모두 존재하지 않으므로 항상 그대로 둔다. N이 1이거나 2라면 어떤 값도 보정하지 않는다. 이 규칙에 따라 보정한 위치의 개수와, 보정을 마친 모든 측정값의 합을 구한다.
입력
첫째 줄에 정수 N과 T가 공백으로 구분되어 주어진다. 1 ≤ N ≤ 100,000이고 0 ≤ T ≤ 99이다. 둘째 줄에 시간순 측정값 A_1, A_2, ..., A_N이 공백으로 구분되어 주어진다. 각 A_i는 0 이상 99 이하의 정수다.
출력
보정한 위치의 개수와 보정 후 전체 측정값의 합을 공백으로 구분하여 한 줄에 출력한다. 보정한 위치가 없다면 첫 번째 값으로 0을 출력한다.
예제 입력 1
5 10 20 90 21 0 22
예제 출력 1
2 105
예제 입력 2
4 5 10 15 10 10
예제 출력 2
0 45
예제 입력 3
2 0 99 0
예제 출력 3
0 99
힌트 펼치기
- 세 수의 중앙값은 세 수의 합에서 최솟값과 최댓값을 빼서 구할 수도 있다.
- 원본 배열은 유지하고, 전체 합에서 각 보정으로 달라지는 양만 반영한다.
알고리즘 분류
구현배열정렬풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
댓글 0
로그인하면 댓글을 쓸 수 있습니다.
댓글 접기·펼치기
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| JavaScript | 브라우저 JavaScript | 1000ms / 테스트 | 측정하지 않음 |
| TypeScript | TypeScript 5.9.3 | 1000ms / 테스트 | 측정하지 않음 |
| Python 3 | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음 |
| C | YoWASP Clang 22 | 2000ms / 테스트 | 측정하지 않음 |
| C++ | YoWASP Clang 22 / libc++ | 2000ms / 테스트 | 측정하지 않음 |
| Java | OpenJDK javac + TeaVM (Java 21 문법) | 3000ms / 테스트 | 측정하지 않음 |
| Lua | Wasmoon 1.16.0 / Lua 5.4 | 3000ms / 테스트 | 측정하지 않음 |
| Ruby | Ruby 3.4 / ruby.wasm 2.10.1 | 5000ms / 테스트 | 측정하지 않음 |
| Scheme | BiwaScheme 0.8.3 | 5000ms / 테스트 | 측정하지 않음 |
| Prolog | SWI-Prolog / swipl-wasm 8.2.5 | 5000ms / 테스트 | 측정하지 않음 |
| Perl | Perl 5.28 / WebPerl 0.09-beta | 5000ms / 테스트 | 측정하지 않음 |