Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 조이스틱 - 42860 본문

프로그래머스

[level 2] 조이스틱 - 42860

csct3434 2024. 2. 28. 20:06

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {

    private int answer = Integer.MAX_VALUE;

    public int solution(String name) {
        solve(name, "A".repeat(name.length()), 0, 0);
        return answer;
    }

    private void solve(String correctName, String currentName, int pos, int count) {
        count += Math.min(Math.abs(correctName.charAt(pos) - currentName.charAt(pos)),
            Math.abs(currentName.charAt(pos) + 26 - correctName.charAt(pos)));

        char[] charArray = currentName.toCharArray();
        charArray[pos] = correctName.charAt(pos);
        String nextName = new String(charArray);

        if (nextName.equals(correctName)) {
            answer = Math.min(answer, count);
            return;
        }

        for (int i = 1; i < correctName.length(); i++) {
            int index = (pos + correctName.length() - i) % correctName.length();

            if (nextName.charAt(index) != correctName.charAt(index)) {
                solve(correctName, nextName, index, count + i);
                break;
            }
        }

        for (int i = 1; i < correctName.length(); i++) {
            int index = (pos + correctName.length() + i) % correctName.length();

            if (nextName.charAt(index) != correctName.charAt(index)) {
                solve(correctName, nextName, index, count + i);
                break;
            }
        }
    }
}

'프로그래머스' 카테고리의 다른 글

[level 2] 구명보트 - 42885  (0) 2024.02.28
[level 2] 큰 수 만들기 - 42883  (0) 2024.02.28
[level 2] 카펫 - 42842  (0) 2024.02.28
[level 2] 소수 찾기 - 42839  (0) 2024.02.28
[level 2] H-Index - 42747  (0) 2024.02.28