문제 4498 · 킬로 V
스마트 홈 정상 응답 집계
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
스마트 홈 운영 서버는 집 안에 설치된 장치가 보낸 응답을 한 파일에 모은다. 운영 담당자는 이 파일을 분석하여 정상 응답에 포함된 처리량의 합이 가장 큰 장치를 찾으려 한다. 파일에는 여러 장치의 기록이 섞여 있으며, 같은 장치의 기록이 연속해서 나타난다는 보장은 없다. 각 로그는 장치 번호, 상태, 처리량을 세로줄 문자 |로 연결한 한 줄이다. 예를 들어 12|OK|4는 12번 장치가 정상 상태로 처리량 4를 보고했다는 뜻이다. 상태는 OK 또는 ERR이다. OK 기록의 처리량만 해당 장치의 합계에 더한다. ERR 기록의 처리량은 진단용 값이므로 합계에 더하지 않는다. ERR 기록이 등장해도 이전에 더한 처리량이 사라지거나 장치가 집계 대상에서 제외되지는 않는다. 집계 대상은 OK 기록이 한 번 이상 등장한 장치다. 정상 처리량의 합이 0인 장치도 집계 대상이 될 수 있다. 집계 대상 중 합계가 가장 큰 장치의 번호와 그 합계를 출력한다. 최대 합계가 같은 장치가 여러 개라면 번호가 가장 작은 장치를 선택한다. 모든 로그가 ERR이라서 집계 대상이 없다면 -1과 0을 출력한다. 로그의 각 숫자는 부호와 불필요한 앞자리 0이 없는 십진 정수다. 로그 내부에는 공백이 없으며 구분자는 정확히 두 개다. 같은 내용의 로그가 여러 번 나타나면 각각 별개의 응답이므로 모두 처리한다. 입력 순서에 따른 추가 보정이나 중복 제거는 하지 않는다. 운영 담당자가 사용할 최종 집계 결과를 구하는 프로그램을 작성한다.
입력
첫째 줄에 로그 수 N이 주어진다. 1 ≤ N ≤ 25,000이다. 다음 N개 줄에 장치번호|상태|처리량 형식의 로그가 주어진다. 장치 번호는 1 이상 999 이하의 정수이며 처리량은 0 이상 9 이하의 정수다. 상태는 OK 또는 ERR이다.
출력
선택한 장치 번호와 정상 처리량의 합을 공백으로 구분하여 한 줄에 출력한다. 집계 대상이 없으면 -1 0을 출력한다.
예제 입력 1
6 12|OK|4 7|OK|6 12|ERR|9 12|OK|2 7|ERR|3 3|OK|0
예제 출력 1
7 6
예제 입력 2
3 8|ERR|0 8|ERR|9 2|ERR|1
예제 출력 2
-1 0
예제 입력 3
3 9|OK|0 2|OK|0 1|ERR|8
예제 출력 3
2 0
힌트 펼치기
- 정상 기록이 등장했는지와 처리량의 합이 얼마인지를 구분해서 관리한다.
알고리즘 분류
로그 파싱해시구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |