본문 바로가기
알고리즘/프로그래머스

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

by hxxyeoniii 2025. 3. 6.

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42860

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 풀이

그리디 문제

import java.util.*;

class Solution {
		public int solution(String name) {
			int answer = 0;

			int moveLeftAndRight = name.length() - 1; // 기본 좌우이동 횟수

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

				// 다음 문자가 A일때
				int nextIdx = i+1;
				while(nextIdx < name.length() && name.charAt(nextIdx) == 'A') {
					nextIdx++;
				}
				moveLeftAndRight = Math.min(moveLeftAndRight, i*2 + (name.length() - nextIdx));
				moveLeftAndRight = Math.min(moveLeftAndRight, (name.length() - nextIdx)*2 + i);
			}
			answer += moveLeftAndRight;
			return answer;
		}
	}