문제 3050 · 비트 IV
이웃한 캠핑 표지
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 캠핑장에는 일렬로 나란히 놓인 N개의 캠핑 자리가 있다. 관리자는 각 자리의 입구에 표지 하나를 세워 두었다. 표지에는 가족 구역을 뜻하는 F, 조용한 구역을 뜻하는 Q, 단체 구역을 뜻하는 G 중 하나가 적혀 있다. 자리의 번호는 줄의 한쪽 끝부터 순서대로 1번부터 N번까지 붙어 있다. 야간 순찰 담당자는 바로 이웃한 두 자리의 표지가 같으면 두 자리 사이에 구분등 하나를 설치하려 한다. 서로 다른 구역이 맞닿은 곳에는 이미 경계 표시가 있으므로 구분등을 설치하지 않는다. 여기서 이웃한 두 자리란 번호의 차이가 정확히 1인 두 자리를 말한다. 첫 번째 자리와 마지막 자리는 줄의 양 끝이므로 서로 이웃한 것으로 보지 않는다. 구분등은 자리 자체가 아니라 두 자리 사이의 경계에 설치한다. 따라서 어떤 자리가 양쪽 이웃과 모두 같은 표지를 가지고 있다면 그 자리의 왼쪽 경계와 오른쪽 경계에 각각 구분등을 설치한다. 표지가 같은 자리가 여러 개 연속해서 나타나더라도 그 전체를 하나의 경계로 합치지 않는다. 또한 서로 떨어진 두 자리는 표지가 같아도 구분등 설치 여부를 판단할 때 비교하지 않는다. 관리자는 자리 번호 순서대로 표지의 글자를 이어 붙인 문자열 S를 준비했다. 문자열의 첫 번째 글자는 1번 자리의 표지이고, 마지막 글자는 N번 자리의 표지이다. 표지를 바꾸거나 자리의 순서를 바꾸는 일은 없다. 순찰 전에 필요한 구분등을 정확히 준비할 수 있도록 설치해야 하는 구분등의 총개수를 구해야 한다. 자리가 하나뿐이거나 같은 표지가 이웃한 곳이 전혀 없다면 필요한 구분등은 0개이다. 주어진 문자열을 읽고 필요한 구분등의 개수를 구하는 프로그램을 작성한다.
입력
첫째 줄에 자리 수를 나타내는 정수 N이 주어진다. 1 ≤ N ≤ 1,000이다. 둘째 줄에 길이가 정확히 N인 문자열 S가 주어진다. S는 대문자 F, Q, G로만 이루어져 있으며 공백을 포함하지 않는다.
출력
바로 이웃한 두 자리의 표지가 같은 경계의 개수, 즉 필요한 구분등의 총개수를 정수 하나로 출력한다. 설치할 경계가 없으면 0을 출력한다.
예제 입력 1
7 FFQGGGF
예제 출력 1
3
예제 입력 2
1 Q
예제 출력 2
0
예제 입력 3
6 FQGFQG
예제 출력 3
0
힌트 펼치기
- 문자열의 각 글자를 바로 다음 글자와 비교한다.
- N개의 자리 사이에는 N-1개의 경계가 있다.
관련 서재 장
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |