[프로그래머스] 조이스틱 42860 (JAVA)

dia·2023년 11월 14일
0

풀이 방식

  1. 이름의 길이 계산
  2. 문자열 순회하며 조작 횟수 비교
  3. A를 건너뛰고 다음으로 갈 인덱스 번호 탐색
  4. A가 나왔을 경우 이동 횟수 비교
  5. 조작 횟수와 이동 횟수의 합

포인트

조작 횟수 비교

  • 'A'부터 순방향으로 조작
  • 'Z'부터 역방향으로 조작

이동 횟수 비교

  • 이름의 길이, 건너뛰기 없음
  • A 건너뛰기 순방향, 왼쪽 중복 이동 후 오른쪽으로
  • A 건너뛰기 역방향, 오른쪽 중복 이동 후 왼쪽으로

구현

public class NUM42860 {
    public static void main(String[] args) {
        String name = "JEROEN";
        System.out.println(solution(name));
    }
    public static int solution(String name) {
        int answer = 0;

        int move = name.length() - 1;
        for(int i = 0; i < name.length(); i++){
            answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1);

            int next = i + 1;
            while(next < name.length() && name.charAt(next) == 'A') {
                next++;
            }

            if(next != i + 1) {
                move = Math.min(move, i * 2 + name.length() - next);
                move = Math.min(move, (name.length() - next) * 2 + i);
            }
        }
        answer += move;

        return answer;
    }
}

*다른 분들의 코드를 참고하여 작성했습니다

profile
자기 자신을 위한 CS 메모장 (그림은 지인분이 그려주신 것!)

0개의 댓글