문제 4336 · 바이트 IV
택배 목록 복원
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
택배 분류장에서 전송한 작업 기록에 잘못된 값이 섞였다. 데이터 담당자는 기록을 검증한 뒤 현재 접수된 택배 목록을 복원하려 한다. 처음에는 접수된 택배가 하나도 없다. 각 기록에는 택배 코드, 작업 문자, 무게가 있으며, 입력된 순서대로 처리한다. 택배 코드는 길이가 정확히 4인 문자열이다. 올바른 코드는 네 글자가 모두 숫자이고 첫 글자가 0이 아닌 코드다. 코드에 영문 대문자가 하나라도 있거나 첫 글자가 0이면 그 기록 전체를 무시한다. 무시한 기록은 앞에서 처리한 결과에 아무 영향도 주지 않는다. 작업 문자가 S이면 접수 또는 수정 기록이다. 이때 무게가 1 이상 50 이하일 때만 올바른 기록으로 인정한다. 올바른 S 기록을 만나면 해당 코드의 택배를 목록에 넣고 무게를 기록한다. 이미 목록에 있는 코드라면 기존 무게를 새 무게로 바꾼다. 따라서 같은 코드의 올바른 접수 기록이 여러 번 나타날 수 있다. 작업 문자가 D이면 접수 취소 기록이다. 이때 무게가 정확히 0일 때만 올바른 기록으로 인정한다. 올바른 D 기록을 만나면 해당 코드를 목록에서 지운다. 목록에 없는 코드의 취소 기록은 목록을 바꾸지 않는다. 코드가 올바르더라도 작업에 맞지 않는 무게가 적혀 있으면 기록 전체를 무시한다. 모든 기록을 처리한 뒤 남은 택배의 코드와 무게를 출력해야 한다. 코드는 숫자로 보았을 때 작은 순서로 나열한다. 올바른 코드는 모두 같은 길이이고 첫 글자가 0이 아니므로 문자열의 사전순으로 정렬해도 같은 순서가 된다. 목록이 비어 있으면 택배 수를 나타내는 0만 출력한다.
입력
첫째 줄에 기록 수 N이 주어진다. N은 1 이상 20,000 이하의 정수다. 다음 N개 줄에 코드 C, 작업 문자 O, 무게 W가 공백으로 구분되어 주어진다. C는 숫자 0~9와 영문 대문자 A~Z로 이루어진 길이 4의 문자열이다. O는 S 또는 D다. W는 0 이상 99 이하의 정수다.
출력
첫째 줄에 최종 목록에 남은 택배 수 K를 출력한다. 다음 K개 줄에 코드와 무게를 공백으로 구분하여 코드의 오름차순으로 출력한다. K가 0이면 추가 줄을 출력하지 않는다.
예제 입력 1
8 1204 S 12 0204 S 5 7310 S 30 1204 S 18 7310 D 2 AB12 S 7 7310 D 0 2400 S 51
예제 출력 1
1 1204 18
예제 입력 2
5 1000 D 0 2000 S 50 2000 D 0 3000 S 0 0000 S 10
예제 출력 2
0
예제 입력 3
4 9000 S 3 1001 S 8 9000 S 99 1001 D 4
예제 출력 3
2 1001 8 9000 3
힌트 펼치기
- 검증을 통과한 기록만 코드별 현재 상태에 반영한다.
알고리즘 분류
구현문자열정렬풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |