ABC 거리
면접 대비시간 제한2초메모리 제한512 MB
1번 블록에서 출발해 A, B, C 순서에 맞는 블록만 밟아 N번 블록까지 이동할 때 점프 길이 제곱합을 최소화합니다.
- 난이도
보통10점 중 4점
- 유형
- 동적 계획법
- 정답자
- 아직 제출이 없습니다
문제
ABC 거리는 보도블록 개가 일렬로 놓인 도로다. 보도블록에는 1번부터 번까지 번호가 붙어 있다.
준서의 집은 1번 블록에, 하윤의 집은 번 블록에 있다. 준서는 하윤을 만나려고 점프해서 이동한다.
각 보도블록에는 A, B, C 중 한 글자가 적혀 있다. 1번 블록의 글자는 항상 A다.
준서는 점프로만 움직이고, 번호가 커지는 방향으로만 뛴다. 지금 번 블록에 있다면 번부터 번까지 어느 블록으로든 뛸 수 있다. 한 번에 칸을 뛰는 데 드는 에너지는 이다.
준서는 A, B, C를 순서대로 외치면서 간다. 그래서 준서가 밟는 블록의 글자는 첫 블록부터 차례로 A, B, C, A, B, C, ... 순서여야 한다.
준서가 하윤을 만나는 데 필요한 에너지의 최솟값을 구하는 프로그램을 작성하라.
입력
첫째 줄에 보도블록의 개수 이 주어진다. ()
둘째 줄에 1번 블록부터 번 블록까지 적힌 글자가 길이 인 문자열 하나로 주어진다. 각 글자는 A, B, C 중 하나이고, 첫 글자는 항상 A다.
출력
준서가 하윤을 만나는 데 필요한 에너지의 최솟값을 출력한다. 하윤을 만날 수 없으면 -1을 출력한다.
이 1이면 두 사람이 같은 블록에 있으므로 0을 출력한다.