원형으로 이어진 N개의 음이 주어질 때, 각 곡은 하나의 장음계에 속하는 두 음 이상의 연속 구간이다. 이 고리를 덮는 곡 수의 최솟값을 구한다.
보통7그리디문자열 매칭수학구현아직 제출이 없습니다시간 제한1.5초메모리 제한512 MB한 지역 라디오 방송국의 장비가 고장 나서 같은 플레이리스트를 계속 반복 재생하고 있다. 음 높이를 인식하는 프로그램이 있으니, 이 플레이리스트에 들어 있는 곡 수의 하한을 구해 보자.
반복 구간을 한 바퀴 전부 녹음했다. 녹음은 플레이리스트의 임의의 지점에서 시작해 같은 지점에서 끝난다. 따라서 마지막 음 다음에는 다시 첫 번째 음이 이어지고, 한 곡이 녹음의 끝과 처음에 걸쳐 있을 수도 있다. 프로그램은 인식한 음 N개를 연주된 순서대로 출력한다.
음 이름은 Do, Do#, Re, Re#, Mi, Fa, Fa#, Sol, Sol#, La, La#, Si의 12가지다. 이 목록에서 이웃한 두 음의 간격을 반음이라고 한다. 반음 12개만큼 떨어진 두 음은 이름이 같다. 그래서 Si 다음 음의 이름은 다시 Do다.

한 곡은 음 두 개 이상으로 이루어지고, 한 곡에 나오는 음은 모두 같은 장음계에 속한다.
장음계는 으뜸음 하나로 정해지며 음 여덟 개로 이루어진다. 그중 이름이 서로 다른 음은 일곱 개다. 으뜸음에서 음계의 각 음까지의 간격은 차례로 반음 0, 2, 4, 5, 7, 9, 11, 12개다. 첫 음과 마지막 음은 으뜸음과 이름이 같다. 어떤 음이든 으뜸음으로 삼아 장음계를 만들 수 있다. 예를 들면 다음과 같다.
| 으뜸음 +0 | 으뜸음 +2 | 으뜸음 +4 | 으뜸음 +5 | 으뜸음 +7 | 으뜸음 +9 | 으뜸음 +11 | 으뜸음 +12 | |
|---|---|---|---|---|---|---|---|---|
| Do 장조 | Do | Re | Mi | Fa | Sol | La | Si | Do |
| Do# 장조 | Do# | Re# | Fa | Fa# | Sol# | La# | Do | Do# |
| Re 장조 | Re | Mi | Fa# | Sol | La | Si | Do# | Re |
| Re# 장조 | Re# | Fa | Sol | Sol# | La# | Do | Re | Re# |
| Mi 장조 | Mi | Fa# | Sol# | La | Si | Do# | Re# | Mi |
| 이하 생략 |
녹음에 들어 있을 수 있는 곡 수의 최솟값 M을 구하여라.
첫째 줄에 인식한 음의 개수 N이 주어진다 (2≤N≤10000000).
다음 N개 줄에 음 이름이 연주된 순서대로 한 줄에 하나씩 주어진다. 음 이름은 위에 적은 그대로, 첫 글자만 대문자이고 나머지는 소문자다. 녹음은 항상 조건을 만족하는 플레이리스트에서 나온 것이다.
첫째 줄에 M을 출력한다.