문제 4219 · 바이트 IV
급수대에서 읽힌 참가 코드
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
마라톤 대회의 급수대에는 참가자의 팔찌에 적힌 코드를 읽는 장치가 있다. 한 참가자가 급수대 근처에 오래 머무르면 같은 팔찌가 여러 번 읽힐 수 있다. 운영 담당자는 수집된 문자열을 정리하여 어떤 참가 코드가 가장 많이 읽혔는지 확인하려고 한다. 여기서 읽힌 횟수는 장치가 남긴 기록의 개수이며, 실제로 급수대를 방문한 횟수를 뜻하지는 않는다. 장치의 표시 설정은 일정하지 않다. 영문자를 대문자로 표시하기도 하고 소문자로 표시하기도 하며, 읽기 편하도록 코드 중간이나 양 끝에 하이픈을 넣기도 한다. 이 차이는 참가자를 구분하는 정보가 아니다. 각 기록에서 모든 하이픈을 삭제하고, 남은 영문 소문자를 대문자로 바꾸어 얻은 문자열을 정리 코드라고 한다. 숫자는 그대로 남긴다. 예를 들어 문자열 a-7-b와 A7B의 정리 코드는 모두 A7B이므로 같은 참가 코드로 센다. 하이픈이 연속해서 등장해도 모두 삭제한다. 반면 숫자의 앞에 붙은 0은 삭제하지 않는다. 따라서 A07과 A7은 서로 다른 정리 코드다. 입력 기록에는 영문자 또는 숫자가 적어도 하나 들어 있으므로 정리 코드가 빈 문자열이 되는 일은 없다. 모든 기록을 정리한 뒤, 같은 정리 코드가 나타난 횟수를 합산한다. 가장 많이 나타난 정리 코드가 여러 개이면 사전순으로 가장 앞선 코드를 선택한다. 이 문제의 사전순에서는 숫자 0부터 9가 영문자 A부터 Z보다 앞선다. 처음으로 다른 문자가 더 앞선 문자열이 작으며, 한 문자열이 다른 문자열의 접두사이면 짧은 문자열이 작다. 선택한 정리 코드와 그 코드가 읽힌 전체 횟수를 출력한다. 입력에는 기록이 하나 이상 있으므로 선택할 코드가 없는 경우는 없다.
입력
첫째 줄에 기록 수 N이 주어진다. N은 1 이상 10,000 이하의 정수다. 다음 N개 줄에 기록 문자열이 하나씩 주어진다. 각 문자열의 길이는 1 이상 20 이하이며, 영문 대문자, 영문 소문자, 숫자, 하이픈(-)으로만 이루어진다. 각 문자열에는 영문자 또는 숫자가 적어도 하나 있다. 문자열 안에는 공백이 없다.
출력
첫째 줄에 선택한 정리 코드를 출력한다. 둘째 줄에 그 코드가 나타난 횟수를 정수로 출력한다.
예제 입력 1
6 a-7-b A7B c-2 C2 --a7B- C-3
예제 출력 1
A7B 3
예제 입력 2
4 b-2 A-9 B2 a9
예제 출력 2
A9 2
예제 입력 3
3 0-a A 00A
예제 출력 3
00A 1
힌트 펼치기
- 하이픈 삭제와 대문자 변환을 마친 문자열을 집계의 기준으로 사용한다.
- 최대 횟수가 같을 때의 사전순 조건도 함께 비교한다.
관련 서재 장
알고리즘 분류
문자열해시집계풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |