송민준의 개발노트

프로그래머스 조이스틱 본문

알고리즘/프로그래머스

프로그래머스 조이스틱

송민준 2021. 2. 15. 23:22

programmers.co.kr/learn/courses/30/lessons/42860

 

코딩테스트 연습 - 조이스틱

조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다

programmers.co.kr

------------------------
J E R O E N
9 4 9 12 4 13
------------------------
상하는 아스키코드 활용


좌우는
기본 베이스를 좌에서 우로 순차적으로 쭉 가는 것으로 세팅.
탐색하는 인덱스에서 역으로 갔을 경우 Count

 

-> 기본 베이스와 CountMath.min으로 비교해서 최솟값 구함

class Solution {
    public int solution(String name) {
        int answer = 0;

        int len = name.length();

        //최솟값 세팅
        int minMove = len-1;

        for(int i=0; i<len; i++) {
            // 상하
            answer += Math.min(name.charAt(i)-'A', 'Z'-name.charAt(i)+1);

            // 좌우
            int next = i+1;// 현재 다음 위치부터
            //다음이 A라면 계속 NEXT++
            while(next<len && name.charAt(next) == 'A') {
                next++;
			}
            minMove = Math.min(minMove, i + len - next + i);
        }

        answer += minMove;

        return answer;
    }
}