[Programmers]JOYSTIC-貪欲法(Greedy)


// 조이스틱 - 탐욕법(Greedy)
public class Joystick { // 프로그래머스 TC 오류있음
	public int solution(String name) {
		int answer = 0, len = name.length(), toRight = len - 1; // toRight : 오른쪽으로만 움직이는 거리
		
		for (int i = 0; i < len; i++) { // 상하 최소값 구하기
			answer += name.charAt(i) > 'M' ? 'Z' - name.charAt(i) + 1 : name.charAt(i) - 'A';
		}
		
		for (int i = 0; i < len; i++) { // 좌우 최소값 구하기
			int next = i + 1;
			while (next < len && name.charAt(next) == 'A') {
				next++;
			}
			toRight = Math.min(toRight, 2 * i + len - next); // 좌우 최소값은 오른쪽으로만 움직이는 거리(toRight)와 현 위치(i)에서 후진하는 거리(2*i+name.length()-next)의 최소값이다.
		}
		
		return answer + toRight;
	}
}