각 문자에 대해 알파벳을 변경하는 횟수와 커서를 이동하는 횟수를 고려해야 하는 문제
name의 길이 - 1)와 비교해 최솟값을 선택한다.class Solution {
public int solution(String name) {
int answer = 0;
int length = name.length();
int move = length - 1;
for (int i = 0; i < length; i++) {
answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1);
int next = i + 1;
while (next < length && name.charAt(next) == 'A') {
next++;
}
move = Math.min(move, i + length - next + i);
}
answer += move;
return answer;
}
}
move를 계산하는 방식에서 모든 케이스를 고려하지 못 함
class Solution {
public int solution(String name) {
int answer = 0;
int length = name.length();
for (int i = 0; i < length; i++) {
answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1);
}
int move = length - 1;
for (int i = 0; i < length; i++) {
int next = i + 1;
while (next < length && name.charAt(next) == 'A') {
next++;
}
move = Math.min(move, i + length - next + Math.min(i, length - next));
}
answer += move;
return answer;
}
}