참고
문제해설
문제 로직고민
NOTE
•
변경하지 않아도 되는 A문자는 최대한 방문하지 않으면서 조이스틱을 움직여야 한다.
◦
DFS로 모든 지점을 방문할때의 최소이동수를 찾는다.
•
알파벳의 경우에는 이전과, 앞의 이동중 어디가 더 짧은지 탐색해서 구한다.
◦
DFS로 해당 알파벳을 방문할때의 최소이동수를 찾는다.
•
위의 풀이 방식으로 계속 진행했는데 풀이가 틀렸다.
◦
2시간이상 도전해서 실패해서 다른 풀이를 참고 하기로 한다.
작성코드
NOTE
class Solution {
public int solution(String name) {
int answer = 0;
int length = name.length();
int index; // 다음 값들을 확인할 때 사용
int move = length - 1; // 좌우 움직임 수를 체크
for(int i = 0; i < name.length(); i++){
answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1);
index = i + 1;
while(index < length && name.charAt(index) == 'A'){
index++;
}
move = Math.min(move, i * 2 + length - index);
move = Math.min(move, (length - index) * 2 + i);
}
return answer + move;
}
}
Java
복사
문제가 너무 어려웠다…