문제 4514 · 바이트 I
한 회의실만 방문한 사람
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 건물에서 같은 날 두 회의실을 사용하여 행사를 진행했다. 회의실 번호는 1번과 2번이다. 행사 참가자는 입구의 기록 장치에 자신의 식별자를 입력한 뒤 회의실에 들어간다. 식별자는 영문 소문자로만 이루어진 문자열이며, 서로 다른 참가자가 같은 식별자를 사용하는 일은 없다. 같은 참가자는 어느 회의실을 방문하더라도 항상 같은 식별자를 사용한다. 기록 장치는 참가자가 식별자를 입력할 때마다 회의실 번호와 식별자를 한 줄씩 저장한다. 참가자는 쉬는 시간에 나갔다가 다시 들어올 수 있고, 입구에서 같은 식별자를 여러 번 입력할 수도 있다. 따라서 같은 회의실과 같은 식별자로 이루어진 기록이 여러 줄 등장할 수 있다. 기록에 퇴실 정보는 없지만, 이번 작업에서는 머무른 시간이나 실제 입장 횟수를 구할 필요가 없다. 행사 담당자는 기록에 등장한 참가자 중 정확히 한 회의실에서만 기록이 발견되는 사람에게 해당 회의실의 안내 자료를 보내려고 한다. 어떤 참가자의 기록이 1번 회의실에서만 발견되면 1번 자료를 보내고, 2번 회의실에서만 발견되면 2번 자료를 보낸다. 두 회의실 모두에서 한 번 이상 기록이 발견되면 발송 대상에서 제외한다. 한 회의실에 기록이 몇 번 등장했는지는 대상 선정에 영향을 주지 않는다. 전체 기록이 주어졌을 때 발송 대상의 식별자와 자료 번호를 구한다. 같은 사람을 결과에 두 번 넣어서는 안 된다. 결과는 식별자의 사전순으로 정렬해야 하며, 사전순은 알파벳 순서로 처음 다른 문자를 비교하고 한 문자열이 다른 문자열의 접두사이면 짧은 문자열을 앞에 두는 순서다. 발송 대상이 한 명도 없을 수도 있으며, 이때는 대상 수가 0이라는 사실만 출력한다.
입력
첫째 줄에 기록의 수 N이 주어진다. 다음 N개 줄에는 회의실 번호 r과 참가자 식별자 s가 공백으로 구분되어 주어진다. 0 ≤ N ≤ 40,000 r은 1 또는 2다. s는 영문 소문자로만 이루어져 있으며 길이는 1 이상 6 이하이다. 기록은 임의의 순서로 주어진다.
출력
첫째 줄에 발송 대상의 수 K를 출력한다. 다음 K개 줄에 대상의 식별자와 자료 번호를 공백으로 구분하여 출력한다. 식별자의 사전순으로 출력한다. K가 0이면 첫째 줄만 출력한다.
예제 입력 1
7 1 sora 1 ara 2 sora 2 bori 2 bori 1 ara 1 dune
예제 출력 1
3 ara 1 bori 2 dune 1
예제 입력 2
4 1 mint 2 mint 2 pine 1 pine
예제 출력 2
0
예제 입력 3
0
예제 출력 3
0
힌트 펼치기
- 각 회의실에서 발견된 식별자를 집합으로 관리하면 중복 기록을 자연스럽게 제거할 수 있다.
- 두 집합 중 한 곳에만 속하는 식별자를 모아 정렬한다.
관련 서재 장
알고리즘 분류
해시집합정렬풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |