[Programmers]JOYSTIC-貪欲法(Greedy)
// 조이스틱 - 탐욕법(Greedy)
public class Joystick { // 프로그래머스 TC 오류있음
public int solution(String name) {
int answer = 0, len = name.length(), toRight = len - 1; // toRight : 오른쪽으로만 움직이는 거리
for (int i = 0; i < len; i++) { // 상하 최소값 구하기
answer += name.charAt(i) > 'M' ? 'Z' - name.charAt(i) + 1 : name.charAt(i) - 'A';
}
for (int i = 0; i < len; i++) { // 좌우 최소값 구하기
int next = i + 1;
while (next < len && name.charAt(next) == 'A') {
next++;
}
toRight = Math.min(toRight, 2 * i + len - next); // 좌우 최소값은 오른쪽으로만 움직이는 거리(toRight)와 현 위치(i)에서 후진하는 거리(2*i+name.length()-next)의 최소값이다.
}
return answer + toRight;
}
}
Reference
この問題について([Programmers]JOYSTIC-貪欲法(Greedy)), 我々は、より多くの情報をここで見つけました https://velog.io/@kmdngmn/Programmers-조이스틱-탐욕법Greedyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol