🔗 조이스틱
class Solution {
public int solution(String name) {
int answer=0;
int len=name.length();
// 1. 상하 이동 최소화
for(int i=0;i<len;i++){
char c=name.charAt(i);
answer+=Math.min('Z'-c+1,c-'A');
}
// 2. 커서 이동 최소화
int move = len - 1;
for (int i = 0; i < len; i++) {
// A를 건너뛴 다음 index
int next = i + 1;
// 연속된 A 구간 건너뛰기
while (next < len && // 구간 안에 있고
name.charAt(next) == 'A') { //A라면 건너뛰기
next++;
}
// 오른쪽으로 i칸 → 왼쪽으로 len - next칸 (되돌아가기)
move = Math.min(
move,
i + // 오른쪽 이동
(len - next) + // A 건너뛴 next 부터 끝까지 이동
Math.min(i, len - next)// 최소 거리인 곳으로 왕복할 것이므로
);
}
answer += move;
return answer;
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #159994 : 카드 뭉치 - JAVA (0) | 2025.04.19 |
---|---|
[ 프로그래머스 ] #42862 : 체육복 - JAVA (0) | 2025.04.18 |
[ 프로그래머스 ] #64065 : 튜플 - JAVA (0) | 2025.04.16 |
[ 프로그래머스 ] #42586 : 기능개발 - JAVA (0) | 2025.04.15 |
[ 프로그래머스 ] #42839 : 소수 찾기 - JAVA (0) | 2025.04.14 |