문제 4102 · 바이트 I
배달 요청 내보내기 검사
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
배달 앱의 운영 담당자는 다른 업무 도구로 전달할 요청 데이터를 검사하고 있다. 요청 한 건은 주문 코드, 연락처, 전달 메모를 이 순서대로 이어 붙인 한 줄이다. 세 필드 사이에는 세로줄 문자 |가 하나씩 들어간다. 입력에는 각 줄마다 세로줄이 정확히 두 개 있으므로 필드 구분 자체는 검사하지 않는다. 대신 각 필드가 다음 규칙을 만족하는지 확인해야 한다. 주문 코드는 정확히 7글자여야 한다. 첫 글자는 영문 대문자 D이고, 나머지 여섯 글자는 모두 숫자 0부터 9까지 중 하나여야 한다. 여섯 숫자 중 첫 번째 숫자는 0일 수 없다. 예를 들어 숫자 부분에 영문자가 섞이거나 D 다음에 0이 나오면 잘못된 코드다. 연락처는 정확히 13글자여야 하며 010-xxxx-xxxx 형태여야 한다. 여기서 x는 각각 숫자 한 글자를 뜻한다. 앞의 세 글자는 반드시 010이고, 네 번째와 아홉 번째 글자는 하이픈이어야 한다. 나머지 여덟 위치에는 숫자만 올 수 있다. 숫자가 모두 0인 부분도 허용한다. 전달 메모는 길이가 1 이상 40 이하이며 영문 소문자와 공백만 포함해야 한다. 첫 글자와 마지막 글자는 공백일 수 없고, 공백 두 개가 연속해서 나올 수도 없다. 공백으로 나눈 각각의 부분을 단어라고 할 때 cash 또는 cancel과 정확히 같은 단어가 있으면 허용하지 않는다. 단어 안에 이 문자열이 일부로 들어 있는 것은 허용한다. 한 요청에서 여러 필드가 잘못되었으면 주문 코드, 연락처, 전달 메모 순서로 먼저 발견되는 오류 하나만 기록한다. 각각의 오류 이름은 CODE, PHONE, NOTE다. 모든 필드가 올바른 요청은 오류 목록에 기록하지 않는다. 정규식 기능을 사용하지 않고 문자와 문자열을 직접 확인하는 방식으로 검사하여 오류 목록을 만드는 프로그램을 작성한다.
입력
첫째 줄에 요청 수를 나타내는 정수 N이 주어진다. 1 ≤ N ≤ 3,000이다. 다음 N개 줄에 요청이 한 줄씩 주어진다. 각 줄에는 |가 정확히 두 개 있으며, 각 필드의 길이는 0 이상 50 이하이다. 필드에는 ASCII 영문 대문자, 영문 소문자, 숫자, 공백, 하이픈, 밑줄만 등장한다. 줄바꿈 문자는 필드에 포함되지 않는다. 필드의 처음과 끝에 있는 공백도 실제 입력의 일부이므로 제거하지 않고 검사해야 한다. 입력의 줄바꿈은 LF이며 마지막 줄 뒤의 LF는 있어도 되고 없어도 된다.
출력
첫째 줄에 오류가 있는 요청 수 K를 출력한다. 다음 K개 줄에 요청의 입력 순번과 오류 이름을 공백으로 구분하여 출력한다. 요청의 순번은 1부터 시작하며 오름차순으로 출력한다. 오류가 없으면 첫째 줄에 0만 출력한다. 한 요청에 오류가 여러 개이면 CODE, PHONE, NOTE 순서의 우선순위를 적용한다.
예제 입력 1
5 D123456|010-1234-5678|leave at door D023456|010-1234-5678|cash only D222222|010-123-5678|ring once D333333|010-0000-0000|please cancel D444444|010-4444-4444|cashier desk
예제 출력 1
3 2 CODE 3 PHONE 4 NOTE
예제 입력 2
3 D999999|010-0000-0000|door D100000|010-1111-2222|cancelled order D345678|010-9876-5432|use side door
예제 출력 2
0
예제 입력 3
3 |bad|cash D123456||door D123456|010-1234-5678|two words
예제 출력 3
3 1 CODE 2 PHONE 3 NOTE
힌트 펼치기
- 입력 전체에 strip을 적용하면 검사에 필요한 공백이 사라질 수 있다.
- 길이와 각 위치의 문자 조건을 먼저 확인하고, 메모의 금지 단어는 단어 전체를 비교한다.
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |