[programmers] 조이스틱
in Algorithm on Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42860
class Solution {
public int solution(String name) {
int answer = 0;
int len = name.length();
// 1. 알파벳 바꾸는 조작 횟수 계산
for (char c : name.toCharArray()) {
answer += Math.min(c - 'A', 'Z' - c + 1);
}
// 2. 커서 이동 최소값 계산
int minMove = len - 1; // 오른쪽으로만 이동하는 경우
for (int i = 0; i < len; i++) {
int next = i + 1;
// 연속된 'A' 찾기
while (next < len && name.charAt(next) == 'A') {
next++;
}
// i: 돌아가는 위치
// next: A가 끝나는 위치
int move = i + len - next + Math.min(i, len - next);
minMove = Math.min(minMove, move);
}
return answer + minMove;
}
}