RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00099

볼 모으기

Gold V 골드 V
난이도
1s
시간 제한
1024MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

빨간색 볼과 파란색 볼이 <그림 1>에서 보인 것처럼 일직선상에 섞여 놓여 있을 때, 볼을 옮겨서 같은 색 볼끼리 인접하게 놓이도록 하려고 한다.

그림 1

볼을 옮기는 규칙은 다음과 같다.

  1. 바로 옆에 다른 색깔의 볼이 있으면 그 볼을 모두 뛰어 넘어 옮길 수 있다. 즉, 빨간색 볼은 옆에 있는 파란색 볼 무더기를 한 번에 뛰어 넘어 옮길 수 있다. 유사하게, 파란색 볼은 옆에 있는 빨간색 볼 무더기를 한 번에 뛰어 넘어 옮길 수 있다.
  2. 옮길 수 있는 볼의 색깔은 한 가지이다. 즉, 빨간색 볼을 처음에 옮겼으면 다음에도 빨간색 볼만 옮길 수 있다. 유사하게, 파란색 볼을 처음에 옮겼으면 다음에도 파란색 볼만 옮길 수 있다.

예를 들어, 처음에 볼이 <그림 1>에서 보인 것처럼 있을 때, 빨간 볼을 <그림 2>에서 보인 것처럼 옮긴 후, <그림 3>에서 보인 것처럼 옮긴다면 두 번 만에 같은 색끼리 모을 수 있다.

그림 2

그림 3

반면에 파란색 볼을 선택하여 <그림 4>에서 보인 것처럼 옮기면 (화살표에 있는 수는 옮기는 순서를 나타낸다) 네 번을 옮겨야 같은 색의 볼끼리 모을 수 있다.

그림 4

일직선상에 놓여 있는 볼에 관한 정보가 주어질 때, 규칙에 따라 볼을 이동하여 같은 색끼리 모으되 최소 이동횟수를 찾는 프로그램을 작성하시오.

제약
입력 형식

표준 입력으로 다음 정보가 주어진다.

첫 번째 줄에는 볼의 총 개수 \(N\)이 주어진다 (\(1 \le N \le 500{,}000\)).

다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다.

문자열에는 R 또는 B 중 한 종류만 주어질 수도 있으며, 이 경우 답은 \(0\)이 된다.

출력 형식

표준 출력으로 최소 이동횟수를 출력한다.

서브태스크
서브태스크점수설명

1

15점

\(N \le 10\).

2

22점

\(N \le 1{,}000\).

3

14점

\(N \le 500{,}000\)이고, 처음 상태에서 모든 파란 공은 연속해서 존재한다.

4

49점

원래의 제약조건 이외에 아무 제약조건이 없다.

예제 1
입력
9
RBBBRBRRR
출력
2
예제 2
입력
8
BBRBBBBR
출력
1
문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2019 > 2차 대회 > 초등부 2번

평가 및 의견

볼 모으기

개요
출제자 난이도 Gold V 골드 V 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

볼 모으기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8