문제 3643 · 비트 II
이어진 운동 기록
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 헬스장은 회원에게 하루마다 운동 계획의 달성 여부를 기록하도록 한다. 회원이 그날 정한 운동을 모두 마쳤으면 대문자 O를 기록하고, 마치지 못했으면 대문자 X를 기록한다. 담당자는 이 기록을 보고 운동 계획을 가장 오래 연속으로 달성한 기간의 길이를 안내하려 한다. 기록 문자열의 각 문자는 하루를 나타내며, 왼쪽부터 날짜가 빠른 순서로 놓여 있다. 서로 이웃한 문자는 실제로 연속된 두 날짜의 기록이다. 기록이 빠진 날짜는 없으므로 문자열에서 이웃한 O들은 그대로 연속 달성 기간을 이룬다. X가 하나라도 나오면 그 앞에서 이어지던 달성 기간은 끝나며, 이후에 나오는 O부터 새로운 기간을 센다. 예를 들어 달성한 날과 달성하지 못한 날 사이를 건너뛰어 두 기간을 하나로 합칠 수는 없다. 또한 기록의 마지막 날과 첫날은 서로 이어진 날짜로 취급하지 않는다. 첫 번째 문자부터 시작하는 기간이나 마지막 문자에서 끝나는 기간도 다른 기간과 같은 기준으로 계산한다. 회원이 실제로 운동한 시간이나 수행한 운동의 종류는 계산에 사용하지 않는다. 길이가 N인 기록 문자열이 주어질 때, O만으로 이루어진 연속 구간 중 가장 긴 구간의 길이를 구한다. 길이는 그 구간에 들어 있는 문자의 개수, 즉 연속으로 계획을 달성한 날짜 수이다. 가장 긴 구간이 여러 개여도 위치를 구분할 필요 없이 그 길이만 출력한다. 모든 기록이 X라서 달성한 날이 한 번도 없다면 0을 출력한다. 모든 기록이 O라면 전체 기록의 길이가 답이다.
입력
첫째 줄에 기록한 날짜 수 N이 주어진다. 둘째 줄에 길이가 N인 문자열 S가 주어진다. N은 정수이고 1 ≤ N ≤ 1,000이다. S는 영문 대문자 O와 X로만 이루어지며 공백을 포함하지 않는다.
출력
운동 계획을 연속으로 달성한 가장 긴 기간의 길이를 정수 하나로 출력한다. 달성한 날이 없으면 0을 출력한다.
예제 입력 1
12 OOXOOOXOOOOX
예제 출력 1
4
예제 입력 2
5 XXXXX
예제 출력 2
0
예제 입력 3
4 OOOO
예제 출력 3
4
힌트 펼치기
- O를 만나면 현재 연속 길이를 늘리고, X를 만나면 0으로 되돌린다.
- 지금까지 확인한 연속 길이의 최댓값을 관리한다.
관련 서재 장
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |