문제 4534 · 킬로 V
항공권 코드 표기 통합
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
항공권 예약 내역을 모으는 프로그램에 여러 발권 창구에서 작성한 코드가 도착했다. 창구마다 영문자를 대문자로 쓰기도 하고 소문자로 쓰기도 하며, 번호 앞에 서로 다른 개수의 0을 붙이기도 한다. 이 차이를 그대로 두면 같은 항공권 코드의 등장 횟수가 여러 항목으로 나뉜다. 담당자는 표기 차이를 통합한 뒤 가장 많이 등장한 코드를 첫 화면에 표시하려고 한다. 입력 코드의 형식은 영문자 두 개, 붙임표 한 개, 숫자 한 개 이상 여덟 개 이하를 차례로 이어 붙인 문자열이다. 영문자는 영어 대문자 또는 소문자이며, 숫자는 0부터 9까지의 문자이다. 영문자 부분에 숫자가 들어가거나 숫자 부분에 영문자가 들어가는 경우는 없다. 코드 내부에는 공백이 없다. 코드의 표준 표기는 다음 규칙으로 만든다. 먼저 앞의 영문자 두 개를 모두 대문자로 바꾼다. 붙임표는 그대로 둔다. 이어서 숫자 부분의 맨 앞에 연속해서 나타나는 0을 모두 제거한다. 단, 숫자 부분이 전부 0이었다면 숫자 한 개로 이루어진 문자열 0을 남긴다. 예를 들어 qR-00042와 Qr-42의 표준 표기는 모두 QR-42이다. 표준 표기가 같은 입력 코드는 같은 항목으로 센다. 모든 입력 코드를 통합했을 때 가장 많이 등장한 표준 표기와 그 등장 횟수를 구한다. 등장 횟수가 같은 항목이 여러 개라면 표준 표기 문자열 자체가 사전순으로 가장 앞선 항목을 선택한다. 사전순 비교는 문자를 왼쪽부터 비교하며, 처음 다른 문자의 순서로 결정한다. 숫자 문자는 0부터 9, 대문자는 A부터 Z 순서이다. 한 문자열이 다른 문자열의 접두사라면 짧은 문자열이 앞선다. 번호를 정수로 바꾸어 크기를 비교하지 않는다.
입력
첫째 줄에 코드 수 N이 주어진다. 다음 N개의 줄에 코드가 하나씩 주어진다. 1 ≤ N ≤ 20,000이다. 각 코드는 영문자 두 개, 붙임표, 숫자 1개 이상 8개 이하로 구성된다. N은 정수이며, 모든 코드는 지문에 제시한 형식을 만족한다.
출력
선택한 코드의 표준 표기와 등장 횟수를 한 줄에 공백으로 구분하여 출력한다. 입력 코드가 적어도 하나 있으므로 선택할 항목은 항상 존재한다.
예제 입력 1
6 qR-00042 Qr-42 AB-0 ab-000 QR-042 ZZ-9
예제 출력 1
QR-42 3
예제 입력 2
4 aa-2 AA-0002 aA-10 Aa-0010
예제 출력 2
AA-10 2
예제 입력 3
1 zZ-00000000
예제 출력 3
ZZ-0 1
힌트 펼치기
- 각 코드를 표준 표기로 바꾼 뒤 해시에 등장 횟수를 저장한다.
- 동점 비교에서는 숫자 부분도 문자열의 일부로 비교한다.
관련 서재 장
알고리즘 분류
문자열해시풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |