문제 링크
풀이
로직
상하 움직임
- A가 아닌 값은 위아래로 몇번 움직이면 되는지 구하면 된다
 
- A~Z까지 
diff에 위 or 아래로 몇번 움직이는게 최단인지 담아둔다. 
diff 길이가 알파벳 갯수와 동일하고  
diff의 idx는 알파벳에서의 idx와 동일 => diff에서 idx 1번은 B를 의미, idx 25번은 Z를 의미 
 
int answer = 0;
int[] diff={0,1,2,3,4,5,6,7,8,9,10,11,12,13,12,11,10,9,8,7,6,5,4,3,2,1}; 
                                                                         
for(char c:name.toCharArray())
    answer+=diff[c-'A']; 
좌우 움직임
- 좌우 움직임을 가져가려면 1) 우측 + 우측되돌아가기 + 좌측, 2) 좌측 + 좌측되돌아가기 + 우측 이 두가지가 우측으로만 움직였을때 보다 작아야한다.
- 맨앞쪽 or 맨뒤쪽 연속된 A가 있을경우 => 우측으로만 움직이거나, 좌측으로만 움직이거나 하면된다.
- (참고) 맨앞쪽에 연속된 A가 있는 경우는 아래 코드에서 좌측으로 움직이는 경운 i=0인 경우로 고려됨
 
- 즉, 우측 0회 + 우측되돌아가기 0회 + 좌측 n회 이렇게 계산되니 => 좌측으로만 몇회 움직였는지로 계산됨
 
 
- 중간에 A가 있는 경우 => 이경우가 좌우로 모두 움직임 가져가야하는 경우임
 
 
int length=name.length();
        int min=length-1; 
        for(int i=0;i<length;i++){
            int next=i+1;
            while(next<length && name.charAt(next)=='A'){ 
                next++;
            }
            
              
              
              
              
                
            min = Math.min(min, i + length-next + Math.min(i, length-next) );