알고리즘/프로그래머스

** 조이스틱 **

베리영young 2024. 2. 14. 00:12

ㅠㅠㅠ

 

import java.util.*;
import java.io.*;

class Solution {
    public int solution(String name) {
        //각 글자가 돌아가는 횟수의 합
        int answer = 0;
        answer = countEach(name, answer);
        
        int moveCnt = name.length()-1; //그냥 쭉 가는 거부터 시작
        for(int i=0; i<name.length(); i++) {
            //연속 A
            int next = i+1;
            while(next < name.length() && name.charAt(next)=='A')
                next++;
            
            moveCnt = Math.min( moveCnt, (i*2) + name.length()-next );
            moveCnt = Math.min( moveCnt, (name.length()-next)*2 + i );
        }
        
        
        return answer + moveCnt;
    }
    
    //
    public int countEach(String name, int answer) {
        for(int i=0; i<name.length(); i++) {
            char c = name.charAt(i);
            answer += Math.min(c-'A', 'Z'-c+1);
        }
        
        return answer;
    }
}