기존 코드 (실패)
import java.util.*;
class Solution {
public int solution(String name) {
int answer = 0;
int len = name.length();
//최대로 가질 수 있는 min값은 끝까지 가는것
int min_move = len-1;
for(int i=0; i<len; i++) {
answer += Math.min(name.charAt(i)-'A', 'Z'-name.charAt(i)+1);
//좌우: 연속된 A의 등장에 따라 최소 움직임이 달라진다
int next = i+1;// 현재 다음 위치부터
//내 다음이 A라면 계속 NEXT++
while(next<len && name.charAt(next) == 'A')
next++;
min_move = Math.min(min_move, i+len-next + i);
}//for
answer += min_move;
return answer;
}
}
최근 코드
class Solution {
public int solution(String name) {
int answer = 0;
int horMove = name.length() - 1;
for (int i = 0 ; i < name.length() ; i++){
char c = name.charAt(i);
answer += (c - 'A' < 'Z' - c + 1) ? c - 'A' : 'Z' - c + 1;
int nextIndex = i + 1;
while(nextIndex < name.length() && name.charAt(nextIndex) == 'A')
nextIndex ++;
horMove = Math.min(horMove, i * 2 + name.length() - nextIndex);
}
return answer + horMove;
}
}
'프로그래머스 - JAVA' 카테고리의 다른 글
코딩테스트 연습 > 탐욕법(Greedy) > 구명보트 (0) | 2021.06.13 |
---|---|
코딩테스트 연습 > 탐욕법(Greedy) > 큰 수 만들기 (0) | 2021.06.13 |
코딩테스트 연습 > 탐욕법(Greedy) > 체육복 (0) | 2021.06.13 |
코딩테스트 연습 > 완전탐색 > 카펫 (0) | 2021.06.13 |
코딩테스트 연습 > 완전탐색 > 소수 찾기 (0) | 2021.06.13 |