조이스틱

//상하이동 - 문자를 바꿈
//좌우이동 - 커서위치를 바꿈
 
 
#include <bits/stdc++.h>
using namespace std;
 
int solution(string name)
{
    int answer = 0;
    int n = name.length();
 
 
    for(int i = 0; i < n; i++)      //상하 이동
    {
        char a = name[i];
        answer += min(a - 'A', 'Z' - a + 1);      //min(A에서 출발하는것과 Z에서 출발하는것)
    }
 
    int move = n - 1;               //그냥 오른쪽 직진
    for(int i = 0; i < n; i++)      //좌우 이동
    {
        int next = i + 1;           //next는 A가 끝나는지점을 찾기위한 변수
 
        while(next < n && name[next] == 'A')    //문자열이 끝나지않았거나 다음이 A라면 계속해서 탐색
        {
            next++;
        }
 
        int distance = i + (n - next);     //왼쪽으로 갔을때 거리
        move = min(move, distance);
    }   
 
    answer += move;
    return answer;
}