문제 4734 · 킬로 III
버스 노선 등록 문자열 검사
댓글 0| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms | 측정하지 않음 | 0 | 0 | 0 | 0.00% |
문제
버스 노선 관리 도구는 여러 담당자가 작성한 노선 등록 문자열을 받아 일괄 검사한다. 담당자마다 사용하는 편집기가 달라 오타가 섞일 수 있으므로, 도구는 각 줄 전체가 정해진 규칙을 만족하는지 확인해야 한다. 문자열의 일부만 올바르거나, 올바른 내용 앞뒤에 다른 문자가 붙은 경우에는 통과시키지 않는다. 정상적인 등록 문자열은 노선 코드, 콜론 한 개, 정류장 목록을 차례대로 이어 붙인 형태이다. 노선 코드는 영문 대문자 두 개, 하이픈 한 개, 십진수 노선 번호로 구성한다. 노선 번호는 1 이상 9999 이하의 정수이며, 앞에 0을 붙일 수 없다. 따라서 숫자 부분은 한 자리부터 네 자리까지이고, 첫 숫자는 반드시 1부터 9 사이여야 한다. 부호나 다른 구분 기호는 허용하지 않는다. 정류장 목록에는 정류장 코드가 2개 이상 20개 이하 들어가야 한다. 이웃한 정류장 코드 사이는 문자 > 한 개로 구분한다. 정류장 코드는 영문 대문자 한 개와 숫자 두 개로 이루어진다. 숫자 두 개는 01부터 99까지여야 하며, 00은 허용하지 않는다. 정류장 번호가 한 자리여도 십의 자리에 0을 적어야 한다. 같은 등록 문자열 안에서 동일한 정류장 코드가 두 번 이상 나타나면 잘못된 등록이다. 검사는 각 줄에 독립적으로 적용한다. 서로 다른 줄이 같은 노선 코드를 사용하거나 같은 정류장을 포함해도 상관없다. 정류장 코드는 글자와 숫자를 모두 비교하며, 방문 순서에 대한 추가 조건은 없다. 규칙을 모두 만족한 줄의 수와, 규칙을 만족하지 못한 줄 중 가장 먼저 나타난 줄의 번호를 구해야 한다. 잘못된 줄이 하나도 없을 때는 첫 오류 번호를 0으로 나타낸다.
입력
첫째 줄에 등록 문자열의 개수인 정수 M이 주어진다. 1 ≤ M ≤ 10,000이다. 다음 M개 줄에 검사할 문자열이 하나씩 주어진다. 각 문자열의 길이는 1 이상 200 이하이고, 모든 문자열 길이의 합은 200,000 이하이다. 문자열은 영문 대문자, 영문 소문자, 숫자, 하이픈(-), 콜론(:), 부등호(>), 밑줄(_)만으로 구성된다. 빈 줄과 공백 문자는 주어지지 않는다. 등록 문자열의 줄 번호는 첫 등록 문자열부터 1, 2, …, M이다.
출력
규칙을 만족하는 줄의 수와 첫 오류 줄 번호를 공백으로 구분하여 출력한다. 모든 줄이 정상적이면 첫 오류 줄 번호로 0을 출력한다.
예제 입력 1
4 RM-37:A02>B18>C09 RM-037:A02>B18 KT-8:Z01>Z01 UV-902:M07>N80
예제 출력 1
2 2
예제 입력 2
2 AA-1:A01>B99 ZZ-9999:Z09>A01>Z10
예제 출력 2
2 0
예제 입력 3
3 A-2:A01>B02 BC-7:A00>B02 DE-8:A01
예제 출력 3
0 1
힌트 펼치기
- 노선 코드와 정류장 목록을 구분한 뒤 각각 문자 단위로 검사한다.
- 정류장 코드의 중복 여부는 집합으로 확인할 수 있다.
알고리즘 분류
문자열구현해시풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
댓글 0
로그인하면 댓글을 쓸 수 있습니다.
댓글 접기·펼치기
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| JavaScript | 브라우저 JavaScript | 1000ms / 테스트 | 측정하지 않음 |
| TypeScript | TypeScript 5.9.3 | 1000ms / 테스트 | 측정하지 않음 |
| Python 3 | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음 |
| C | YoWASP Clang 22 | 2000ms / 테스트 | 측정하지 않음 |
| C++ | YoWASP Clang 22 / libc++ | 2000ms / 테스트 | 측정하지 않음 |
| Java | OpenJDK javac + TeaVM (Java 21 문법) | 3000ms / 테스트 | 측정하지 않음 |
| Lua | Wasmoon 1.16.0 / Lua 5.4 | 3000ms / 테스트 | 측정하지 않음 |
| Ruby | Ruby 3.4 / ruby.wasm 2.10.1 | 5000ms / 테스트 | 측정하지 않음 |
| Scheme | BiwaScheme 0.8.3 | 5000ms / 테스트 | 측정하지 않음 |
| Prolog | SWI-Prolog / swipl-wasm 8.2.5 | 5000ms / 테스트 | 측정하지 않음 |
| Perl | Perl 5.28 / WebPerl 0.09-beta | 5000ms / 테스트 | 측정하지 않음 |