알파벳 name을 입력받고, A를 시작으로 조이스틱을 조종해 name과 똑같은 문자열을 만들어야합니다. 이때 조이스틱의 조작 횟수의 최솟값을 리턴하면 되는 문제입니다.
2는 어렵지 않았습니다.
그러나...
1이 조금 까다롭게 느껴진 문제입니다.
class Solution {
public static int solution(String name) {
int answer = 0;
int minMove = name.length()-1;
for(int i=0; i<name.length(); i++) {
if(name.charAt(i) != 'A'){
int next = i+1;
while (next < name.length() && name.charAt(next) == 'A') {
next++;
}
int move = i+ name.length() - next + i;
minMove = Math.min(move, minMove);
}
}
for(int i=0; i<name.length(); i++) {
if(name.charAt(i) != 'A') {
if( name.charAt(i) >= 'M' ) {
answer += ('Z' - name.charAt(i) + 1);
} else {
answer += ( name.charAt(i) - 'A');
}
}
}
return minMove + answer;
}
}
테스트 케이스 8, 10번이 통과하지 못한 상태의 코드입니다.
제가 생각했을때 'AAAAA'처럼 어느쪽으로도 이동하지 않아도 되는 경우에 실패하는 것 같은데
혹시 해결책을 아시는 분은 댓글 남겨주시면 감사하겠습니다..🤔
++ 글을 작성할 때 오른쪽에 마크다운 미리보기(?)를 볼 수 있게 바뀌었네요
마크다운 초보는 만족합니다 긋긋👍