문제 4138 · 바이트 I
학원 자료 코드 등록
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 학원은 수업 자료를 새 보관함으로 옮기면서 각 자료에 붙은 코드를 검사한다. 이전 보관함에는 사람이 직접 적은 코드가 많아 형식에 맞지 않는 문자열과 중복된 문자열이 함께 들어 있다. 담당자는 전달받은 순서대로 코드를 확인하여 등록할 자료를 결정하려 한다. 올바른 코드는 대문자 구역, 숫자 구역, 소문자 구역을 하이픈으로 연결한 형태다. 하이픈은 정확히 두 개여야 한다. 첫 번째 구역은 영문 대문자 정확히 두 글자다. 두 번째 구역은 숫자 두 개 이상 다섯 개 이하로 이루어지며, 첫 숫자는 0이 아니어야 한다. 또한 이 구역에 있는 모든 숫자의 합이 3의 배수여야 한다. 세 번째 구역은 영문 소문자 한 글자 이상 세 글자 이하로 이루어진다. 이 구역의 문자는 왼쪽에서 오른쪽으로 알파벳 순서가 엄격하게 증가해야 한다. 따라서 같은 문자가 두 번 나타나도 올바르지 않다. 각 구역에는 정해진 종류 이외의 문자가 들어갈 수 없다. 형식이 올바르면서 앞서 등록한 코드와 완전히 같지 않은 코드만 등록한다. 형식이 잘못된 코드는 등록하지 않으며, 이후 코드의 중복 여부에도 영향을 주지 않는다. 이미 등록한 코드가 다시 나타나면 그 항목도 등록하지 않는다. 대문자와 소문자는 서로 다른 문자다. 모든 항목을 처리한 뒤 등록한 항목 수와 등록하지 않은 항목 수를 구한다. 등록한 코드가 있다면 그중 사전순으로 가장 앞선 코드도 구한다. 사전순은 문자별로 하이픈, 숫자 0부터 9, 대문자 A부터 Z, 소문자 a부터 z의 순서를 사용하며, 한 문자열이 다른 문자열의 접두사이면 짧은 문자열이 먼저다. 정규식 기능 없이 문자와 구역을 직접 확인하는 방식으로 처리할 수 있다.
입력
첫째 줄에 항목 수 N이 주어진다. N은 1 이상 25,000 이하의 정수다. 다음 N개 줄에 코드가 하나씩 주어진다. 각 코드는 길이가 1 이상 12 이하이며 영문 대문자, 영문 소문자, 숫자, 하이픈으로만 이루어진다. 공백과 빈 줄은 없다.
출력
첫째 줄에 등록한 항목 수와 등록하지 않은 항목 수를 공백으로 구분하여 출력한다. 둘째 줄에 등록한 코드 중 사전순으로 가장 앞선 코드를 출력한다. 등록한 코드가 없으면 둘째 줄에 NONE을 출력한다.
예제 입력 1
7 AB-12-ac AB-12-ac CD-30-z EF-03-ab GH-24-ba AA-111-abc JK-14-a
예제 출력 1
3 4 AA-111-abc
예제 입력 2
3 A-12-a AB-00-a AB-12-aa
예제 출력 2
0 3 NONE
힌트 펼치기
- 하이픈으로 나눈 구역의 개수와 각 구역의 조건을 차례대로 검사한다.
- 형식이 올바른 코드를 집합에 저장하면 중복 등록을 막을 수 있다.
알고리즘 분류
문자열구현집합풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |