아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

채소 키우기는 즐거워 3

시간 제한0.5초메모리 제한1024 MB

요약
R, G, Y로 이루어진 길이 N 문자열이 주어질 때, 같은 문자가 이웃하지 않도록 재배열하는 데 필요한 최소 인접 교환 횟수를 구하고 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 조합론, 구현
정답자
아직 제출이 없습니다

문제

정원 가꾸기 전문가인 JOI군은 집 정원에서 Joy grass라는 채소를 기른다. 정원에는 동서 방향으로 N개의 화분이 나란히 놓여 있다. 화분은 서쪽 끝부터 1, ..., N의 번호가 붙어 있다. Joy grass는 N그루 있고, 화분마다 한 그루씩 심겨 있다.

봄이 되어 JOI군은 예상과 달리 Joy grass의 잎이 여러 색으로 나온 것을 발견했다. 게다가 Joy grass가 생각만큼 자라지 않았다는 것도 알게 되었다. 책을 찾아본 결과 다음 사실을 알아냈다.

  • Joy grass에는 빨간색, 초록색, 노란색 잎이 나는 3종류가 있다.
  • 같은 잎 색의 Joy grass가 가까이 있으면 성장이 방해된다.

그래서 JOI군은 같은 잎 색의 Joy grass가 이웃하지 않도록 화분을 다시 배치하기로 했다. 화분이 너무 무거워서 JOI군은 한 번의 작업으로 이웃한 화분에 있는 Joy grass 두 그루만 바꿔 놓을 수 있다. 즉 한 번의 작업으로 할 수 있는 일은 임의의 화분 i (1 ≤ i ≤ N − 1)를 골라 화분 i와 i + 1에 있는 Joy grass를 바꿔 놓는 것이다.

Joy grass의 수와 각 색이 주어졌을 때, 같은 잎 색의 Joy grass가 이웃하지 않도록 다시 배치하는 데 필요한 최소 작업 횟수를 구하는 프로그램을 작성하시오.

입력

표준 입력에서 다음 데이터를 읽는다.

N
S

S는 길이 N인 문자열이다. i번째 (1 ≤ i ≤ N) 문자는 화분 i에 있는 Joy grass의 잎 색이 빨간색, 초록색, 노란색일 때 각각 R, G, Y이다.

출력

같은 잎 색의 Joy grass가 이웃하지 않도록 다시 배치하는 데 필요한 최소 작업 횟수를 한 줄에 출력한다. 그렇게 다시 배치하는 것이 불가능하면 −1을 출력한다.

제한

  • 1 ≤ N ≤ 400.
  • S는 길이 N인 문자열이다.
  • S의 각 문자는 R, G, Y 중 하나이다.

예제3

  1. 예제 1

    입력
    5
    RRGYY
    
    예상 출력
    2
    
  2. 예제 2

    입력
    6
    RRRRRG
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    20
    YYGYYYGGGGRGYYGRGRYG
    
    예상 출력
    8