본문으로 이동
코드패스 by Devin.KR

문제 4102 · 바이트 I

배달 요청 내보내기 검사

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.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을 적용하면 검사에 필요한 공백이 사라질 수 있다.
  • 길이와 각 위치의 문자 조건을 먼저 확인하고, 메모의 금지 단어는 단어 전체를 비교한다.

출처: Devin.KR 자체 제작

알고리즘 분류문자열구현

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)