알고리즘/프로그래머스
프로그래머스 조이스틱
송민준
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
-> 기본 베이스와 Count를 Math.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;
}
}