게임의 밤
면접 대비시간 제한1초메모리 제한512 MB
원형으로 앉은 A, B, C 팀 사람을 각 팀이 한 구간에 모이도록 만들 때 옮겨야 하는 사람 수의 최솟값을 구합니다.
문제
드디어 Bobby의 생일이 되었고, 그의 지인, 친구, 동료가 모두 모여 보드 게임의 밤을 보내려 한다. 이들은 최대 세 개의 큰 팀으로 나뉘어 진행하는 보드 게임을 할 것이다. Bobby는 자신이 아는 정도에 따라 손님을 나누기로 했다. 지인은 A팀, 친구는 B팀, 동료는 C팀이다.
Bobby가 모두에게 규칙을 설명하느라 정신이 없는 사이, 손님들은 이미 크고 둥근 거실 탁자 둘레에 자리를 잡았다. 그런데 게임을 하려면 같은 팀에 속한 사람들이 모두 서로 옆에 앉아 있어야 한다. 그렇지 않으면 다른 팀의 사람들이 계획을 쉽게 엿들을 수 있어 게임이 망가진다. 따라서 이런 일이 생기지 않도록 몇 사람이 자리를 옮아야 할 수도 있다.
Bobby는 게임을 최대한 빨리 시작하고 싶어 하므로, 사람들이 최대한 효율적으로 자리를 옮기기를 원한다. 둥근 탁자 둘레의 현재 배치가 주어졌을 때, 팀이 올바르게 나란히 앉도록 하기 위해 자리를 옮겨야 하는 사람의 최소 수를 구할 수 있는가?
입력
- 첫째 줄에는 정수 n이 주어진다. n은 플레이어의 수이자 좌석의 수이며, 1 ≤ n ≤ 105이다.
- 둘째 줄에는 길이가 n이고 A, B, C만으로 이루어진 문자열이 주어진다. 이는 탁자 둘레에 앉아 있는 사람들의 팀을 순서대로 나타낸다.
출력
팀이 함께 앉도록 하기 위해 자리를 옮기라고 요청해야 하는 사람의 최소 수를 정수 하나로 출력한다.