문제 4335 · 바이트 I
항공권 코드 점검
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
항공권 발급 자료를 옮기는 과정에서 일부 확인 코드가 잘못 저장되었다. 자료 담당자는 각 코드가 내부 작성 규칙을 만족하는지 검사하려 한다. 실제 항공편이나 승객 정보는 주어지지 않으며, 입력된 코드의 문자만으로 통과 여부를 결정한다. 올바른 확인 코드는 정확히 9개의 문자로 이루어진다. 왼쪽부터 문자의 위치를 1번부터 세었을 때, 1번과 2번은 서로 다른 영문 대문자이고, 3번과 8번은 붙임표 '-'이다. 4번부터 7번까지는 숫자이며, 9번은 영문 대문자이다. 이 조건에 맞지 않는 문자가 하나라도 있거나 전체 길이가 다르면 해당 코드는 통과하지 못한다. 영문 소문자를 대문자로 바꾸거나 빠진 문자를 채우는 등의 보정은 하지 않는다. 네 자리 숫자 부분은 좌석 묶음 번호이다. 앞에 0이 붙는 것은 허용하지만 네 자리가 모두 0인 '0000'은 허용하지 않는다. 예를 들어 '0012'는 이 조건을 만족한다. 번호 전체를 하나의 정수로 더하는 것이 아니라 네 숫자 각각의 값을 사용한다는 점에 주의한다. 마지막 대문자는 확인 문자이다. 대문자 A부터 Z까지에 차례로 0부터 25까지의 값을 부여한다. 첫 두 대문자의 값과 네 숫자의 값을 모두 더한 뒤, 그 합을 26으로 나눈 나머지가 마지막 대문자의 값과 같아야 한다. 이 계산에는 두 붙임표와 마지막 확인 문자 자체를 포함하지 않는다. 입력 순서가 같은 코드도 각각 별도의 자료 한 건으로 센다. 모든 작성 규칙을 만족하는 자료의 수와, 그중 입력에서 가장 먼저 등장한 자료의 번호를 구해야 한다. 자료 번호는 1부터 시작하며, 통과한 자료가 하나도 없으면 가장 먼저 등장한 자료의 번호 대신 0을 사용한다.
입력
첫째 줄에 자료의 수 N이 주어진다. N은 1 이상 20,000 이하의 정수이다. 다음 N개의 줄에 확인 코드가 하나씩 주어진다. 각 코드는 길이가 1 이상 12 이하인 문자열이며, 영문 대문자, 영문 소문자, 숫자, 붙임표 '-'로만 이루어진다. 코드에는 공백이 없다.
출력
통과한 자료의 수와 가장 먼저 통과한 자료의 번호를 공백으로 구분하여 한 줄에 출력한다. 통과한 자료가 없으면 '0 0'을 출력한다.
예제 입력 1
5 AB-0012-E AB-0012-D AA-1234-K AZ-1000-A AB-0000-B
예제 출력 1
2 1
예제 입력 2
4 ab-0012-E AB1234-L AB-0000-B ZZ-9999-I
예제 출력 2
0 0
예제 입력 3
3 A BC-0001-E BC-0001-E
예제 출력 3
2 2
힌트 펼치기
- 길이와 각 위치의 문자 종류를 먼저 검사하면 확인 문자 계산을 안전하게 진행할 수 있다.
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |