문제 3920 · 비트 III
급식 배식 기록 집계
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 학교의 급식실에서는 반별로 식사를 받아 갈 때 배식 단말에 요청 인원을 입력한다. 단말은 요청을 처리할 때마다 결과를 한 줄의 로그로 남긴다. 급식 담당자는 점심 배식이 끝난 뒤 로그를 읽고 실제로 전달한 식사 수와 처리에 실패한 요청 수를 확인하려고 한다. 로그에는 요청 결과를 나타내는 영문 상태와 요청한 식사 수가 공백으로 구분되어 기록되어 있다. 상태가 OK이면 요청이 성공했다는 뜻이다. 이 경우 요청한 수만큼의 식사가 실제로 전달되었으므로, 해당 줄의 식사 수를 실제 전달한 식사 수의 합에 더한다. 상태가 FAIL이면 요청이 실패했다는 뜻이다. 실패한 요청에서는 식사가 한 개도 전달되지 않았으므로, 해당 줄에 적힌 식사 수를 실제 전달한 식사 수의 합에 더하지 않는다. 대신 처리에 실패한 요청 수를 1만큼 늘린다. 로그의 식사 수는 성공 여부와 관계없이 요청 당시 입력한 수량이다. 따라서 실패한 로그에도 양의 정수가 적혀 있다. 예를 들어 다섯 명분을 요청한 기록이 실패했다면 실패한 요청은 한 건이며, 실제 전달한 식사는 0개다. 실패한 식사 수를 합산하는 것이 아니라 실패한 로그의 줄 수를 세어야 한다. 각 로그는 서로 다른 한 번의 요청 처리 결과다. 같은 상태와 같은 수량이 여러 줄에 반복되어도 각각 별도의 요청으로 센다. 실패한 요청을 나중에 다시 시도했다면 재시도 결과도 별도의 줄로 기록되며, 앞선 실패 기록을 지우지 않는다. 로그의 순서를 바꾸거나 앞뒤 기록을 연결할 필요는 없다. 모든 로그에는 OK 또는 FAIL 중 하나만 기록되어 있고, 일부 수량만 전달되는 경우나 전달한 식사를 취소하는 경우는 없다. 모든 기록을 읽어 실제 전달한 식사 수의 합과 실패한 요청 수를 구하는 프로그램을 작성한다.
입력
첫째 줄에 로그 수 N이 주어진다. N은 1 이상 1,000 이하인 정수다. 다음 N개의 줄에는 상태와 요청한 식사 수 Q가 공백으로 구분되어 주어진다. 상태는 대문자 영문 문자열 OK 또는 FAIL이다. Q는 1 이상 100 이하인 정수다.
출력
실제 전달한 식사 수의 합과 실패한 요청 수를 이 순서대로 한 줄에 공백으로 구분하여 출력한다. 성공한 요청이 없으면 첫 번째 값은 0이고, 실패한 요청이 없으면 두 번째 값은 0이다.
예제 입력 1
5 OK 24 FAIL 18 OK 18 FAIL 3 OK 7
예제 출력 1
49 2
예제 입력 2
3 FAIL 100 FAIL 1 FAIL 100
예제 출력 2
0 3
예제 입력 3
2 OK 12 OK 12
예제 출력 3
24 0
힌트 펼치기
- 성공한 줄에서는 수량을 더하고, 실패한 줄에서는 건수만 하나 늘린다.
알고리즘 분류
구현로그 파싱풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |