문제 4368 · 바이트 V
도서관 이관 코드 점검
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
도서관에서는 서가를 옮기는 동안 책 상자마다 이관 코드를 붙인다. 직원이 입력한 코드는 임시 목록에 그대로 저장되므로, 실제 작업을 시작하기 전에 목록의 각 코드가 작성 규칙을 지키는지 검사해야 한다. 같은 코드가 여러 번 등장할 수도 있지만, 중복 여부는 이번 점검의 대상이 아니다. 목록의 각 줄은 다른 줄과 관계없이 하나의 검사 대상으로 취급한다. 올바른 코드는 정확히 9개의 문자로 이루어진다. 왼쪽에서 첫 번째와 두 번째 문자는 영문 대문자여야 한다. 세 번째 문자는 하이픈이고, 네 번째부터 일곱 번째까지는 각각 십진 숫자 한 자리여야 한다. 여덟 번째 문자는 다시 하이픈이며, 아홉 번째 문자는 십진 숫자 한 자리여야 한다. 영문 소문자를 대문자로 바꾸거나 빠진 문자를 보충하는 등의 수정은 하지 않는다. 입력된 문자열 자체가 모든 조건을 만족해야 한다. 가운데 네 자리 숫자는 상자의 일련번호다. 앞에 0이 붙는 것은 허용하지만, 네 자리가 모두 0인 일련번호는 사용할 수 없다. 마지막 숫자는 확인 숫자다. 일련번호를 구성하는 네 숫자의 합을 10으로 나눈 나머지와 확인 숫자가 같아야 한다. 앞의 두 영문자는 확인 숫자 계산에 사용하지 않는다. 예를 들어 일련번호가 1052라면 숫자의 합은 8이므로 확인 숫자는 8이어야 한다. 점검 프로그램은 문자열의 길이와 각 위치의 문자를 직접 조사하는 방식으로 구현한다. 정규식으로 코드를 판별할 필요가 없도록 검사 규칙은 모두 위치와 숫자 계산으로 주어져 있다. 전체 목록에서 올바른 코드의 개수와 잘못된 코드의 개수를 구한다. 또한 직원이 처음 확인해야 할 위치를 알 수 있도록, 잘못된 코드가 등장하는 가장 작은 줄 번호도 구한다. 목록의 줄 번호는 1부터 시작하며, 모든 코드가 올바르면 그 위치는 0으로 정한다.
입력
첫째 줄에 코드의 개수 N이 주어진다. N은 1 이상 10,000 이하의 정수다. 다음 N개 줄에 코드가 하나씩 주어진다. 각 코드는 길이가 1 이상 30 이하인 문자열이며, 영문 대문자, 영문 소문자, 십진 숫자, 하이픈만 포함한다. 공백은 포함하지 않는다. 십진 숫자는 ASCII 문자 0부터 9까지이고 영문자는 ASCII 문자다.
출력
올바른 코드의 개수, 잘못된 코드의 개수, 잘못된 코드가 처음 등장한 줄 번호를 이 순서대로 공백으로 구분하여 한 줄에 출력한다. 잘못된 코드가 없으면 세 번째 값으로 0을 출력한다.
예제 입력 1
5 AB-1052-8 ZX-0000-0 ab-1234-0 LM-9999-6 CD-1234-1
예제 출력 1
2 3 2
예제 입력 2
3 AA-0001-1 BC-0100-1 ZZ-4321-0
예제 출력 2
3 0 0
예제 입력 3
1 A
예제 출력 3
0 1 1
힌트 펼치기
- 길이를 먼저 확인하면 이후에 특정 위치의 문자에 안전하게 접근할 수 있다.
- 네 자리 숫자를 정수 하나로 바꾸지 않아도 확인 숫자를 계산할 수 있다.
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |