문제 3818 · 바이트 V
원형 복도의 빈 객실
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 호텔의 한 층에는 객실 N개가 원형 복도를 따라 배치되어 있다. 객실 번호는 1번부터 N번까지이며, 번호가 증가하는 방향으로 걸으면 N번 객실 다음에는 다시 1번 객실이 나온다. 호텔 관리자는 단체 손님에게 서로 이어진 빈 객실을 배정하려고 한다. 현재 객실 상태는 길이가 N인 문자열 S로 주어진다. 왼쪽에서 i번째 문자가 0이면 i번 객실이 비어 있고, 1이면 이미 사용 중이다. 배정 후보는 시작 객실 하나와 양의 정수인 객실 수를 정하여 만든다. 시작 객실부터 번호가 증가하는 방향으로 정한 수만큼 객실을 확인했을 때, 확인한 모든 객실이 비어 있어야 유효한 후보가 된다. 복도가 원형이므로 후보에 N번 객실과 1번 객실이 함께 들어갈 수 있다. 다만 같은 객실을 두 번 포함할 수 없으므로 후보의 객실 수는 N 이하여야 한다. 후보를 확인하는 도중 사용 중인 객실을 건너뛸 수는 없다. 관리자는 유효한 후보 중 객실 수가 가장 많은 것을 선택한다. 가장 많은 객실 수를 가진 후보가 여러 개라면 시작 객실 번호가 가장 작은 것을 선택한다. 시작 번호가 작다는 이유로 더 적은 객실을 선택하지는 않는다. 모든 객실이 비어 있다면 객실 N개를 모두 선택하고 시작 객실은 1번으로 정한다. 빈 객실이 하나도 없다면 유효한 후보가 없으므로 시작 객실 번호와 객실 수를 모두 0으로 기록한다. 객실의 상태를 바꾸거나 새로운 손님을 실제로 배정하는 작업은 하지 않는다. 주어진 현재 상태만 이용하여 관리자가 기록할 시작 객실 번호와 객실 수를 구하는 프로그램을 작성한다.
입력
첫째 줄에 정수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에 길이가 정확히 N인 문자열 S가 주어진다. S는 문자 0과 1로만 이루어진다. 각 문자는 해당 번호 객실의 현재 상태를 나타낸다.
출력
선택한 후보의 시작 객실 번호와 객실 수를 공백으로 구분하여 한 줄에 출력한다. 유효한 후보가 없으면 0 0을 출력한다.
예제 입력 1
8 00100010
예제 출력 1
4 3
예제 입력 2
5 00000
예제 출력 2
1 5
예제 입력 3
4 1111
예제 출력 3
0 0
힌트 펼치기
- 문자열을 두 번 이어서 살펴보면 N번 객실에서 1번 객실로 이어지는 구간도 확인할 수 있다.
- 모든 객실이 비어 있는 경우에는 같은 객실을 중복해서 세지 않도록 주의한다.
관련 서재 장
알고리즘 분류
배열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |