문제 4608 · 바이트 I
편의점 코드 확인 기록
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 편의점의 직원은 새로 들어온 상품을 검사하면서 포장에 적힌 상품 코드를 차례대로 기록한다. 검사 대상은 특정 상품 한 종류이며, 그 상품의 기준 코드가 별도로 주어진다. 다만 포장 인쇄 방식에 따라 같은 상품의 코드에도 영문 대문자와 소문자가 섞여 있거나 글자 사이에 붙임표가 들어갈 수 있다. 직원은 이러한 표기 차이 때문에 같은 상품을 다른 상품으로 세지 않으려 한다. 두 코드가 같은 상품을 나타내는지는 다음 규칙으로 판단한다. 먼저 코드에서 붙임표 문자 '-'를 모두 지운다. 이어서 영문 소문자를 각각 대응하는 영문 대문자로 바꾼다. 이렇게 얻은 문자열의 길이와 모든 문자가 순서대로 같으면 같은 상품의 코드다. 숫자는 그대로 두며, 글자의 순서를 바꾸거나 숫자 앞의 0을 지우지는 않는다. 이 변환은 기준 코드와 검사 기록의 코드 양쪽에 똑같이 적용한다. 검사 기록에는 입력 순서대로 1번부터 N번까지 번호가 붙어 있다. 직원은 기준 상품이 끊기지 않고 연속으로 등장한 가장 긴 구간을 찾으려 한다. 구간 안의 모든 기록은 기준 코드와 같은 상품이어야 한다. 중간에 다른 상품이 하나라도 나오면 그 위치를 건너뛰어 앞뒤 기록을 하나의 구간으로 합칠 수 없다. 각 기록은 상품 한 개를 나타내므로 같은 코드가 반복되어도 각각 한 번씩 센다. 구간의 길이는 그 구간에 포함된 검사 기록의 개수다. 가장 긴 구간이 여러 개라면 시작 기록 번호가 가장 작은 구간을 선택한다. 기준 상품이 한 번도 등장하지 않았다면 선택할 구간이 없는 것으로 처리한다. 검사 기록의 마지막과 처음은 서로 이어져 있지 않다. 기준 코드와 검사 기록이 주어졌을 때 선택한 구간의 길이, 시작 기록 번호, 마지막 기록 번호를 구한다. 비교할 때에는 변환한 코드를 사용하지만, 출력하는 기록 번호는 원래 입력 순서의 번호를 사용한다.
입력
첫째 줄에 검사 기록의 수 N이 주어진다. 둘째 줄에 기준 코드 T가 주어진다. 다음 N개의 줄에는 검사한 상품의 코드가 하나씩 주어진다. N은 정수이며 1 ≤ N ≤ 100,000이다. 기준 코드와 각 기록의 코드는 길이가 1 이상 40 이하이며 영문 대문자, 영문 소문자, 숫자, 붙임표 '-'로만 이루어진다. 각 코드에는 붙임표가 아닌 문자가 적어도 하나 포함된다. 기준 코드의 길이와 N개 기록 코드의 길이를 모두 합한 값은 100,040 이하이다. 코드 안에는 공백이 없다.
출력
선택한 구간의 길이, 시작 기록 번호, 마지막 기록 번호를 공백으로 구분하여 한 줄에 출력한다. 기준 상품이 한 번도 등장하지 않았다면 0 0 0을 출력한다.
예제 입력 1
7 a-02 A02 a-02 A2 A--02 a0-2 A-02 B02
예제 출력 1
3 4 6
예제 입력 2
5 b7 B-7 x b7 B7 b-7
예제 출력 2
3 3 5
예제 입력 3
3 Q-0 Q Q00 O0
예제 출력 3
0 0 0
힌트 펼치기
- 붙임표를 지우고 영문자를 한 가지 대소문자로 통일한 문자열을 비교한다.
- 기준 상품이 아닌 기록을 만나면 현재 연속 구간의 길이를 0으로 초기화한다.
관련 서재 장
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |