728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
A가 아닌 경우 > 조이스틱 위, 아래 이동도 해야함
+커서 좌우로 움직이기
>커서 오른쪽으로만 쭉 가는 경우 vs 오른쪽 갔다가 왼쪽으로 가는 경우 vs 왼쪽으로 갔다가 오른쪽으로 가는 경우 Math.min으로 최솟값 구하기
import java.util.*;
class Solution {
public int solution(String name) {
int answer = 0;
int n = name.length();
int move = n-1; // 커서 오른쪽으로만 쭉 가는 경우
for(int i=0; i<name.length(); i++){
char c = name.charAt(i);
if(c != 'A'){
// A 아닌 경우 > 위 아래 이동도 해야함
int a = c - 'A';
int z = 'Z' - c + 1;
answer+= Math.min(a,z);
}
// 좌우 커서 이동
// 좌/우 이동 최적화
int next = i + 1;
// i 다음부터 연속된 A 구간 찾기
while (next < n && name.charAt(next) == 'A') {
next++;
}
// 오른쪽으로 갔다가 다시 왼쪽으로 돌아가는 경우
move = Math.min(move, i * 2 + (n - next));
// 왼쪽으로 먼저 갔다가 오른쪽으로 돌아오는 경우
move = Math.min(move, i + (n - next) * 2);
}
return answer + move;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| 같은 숫자는 싫어 : Java (0) | 2026.06.25 |
|---|---|
| [Lv.2] 주식 가격 : Java, Stack (0) | 2026.06.17 |
| [Lv.2] 더 맵게 : Java, PriorityQueue (0) | 2026.06.17 |
| [Lv.2] 롤케이크 자르기 : Java (0) | 2026.06.11 |
| [Lv.3] 순위 : Java / 플로이드 워셜 (0) | 2026.03.06 |