Java/Programmers

[Lv.1]키패드 누르기

GLOWWW 2023. 1. 30. 18:10

package Lv_1;


public class 키패드누르기 {
    public static int comp_dist(int position, int num) {
        return (Math.abs(num-position) / 3) + (Math.abs(num-position) % 3);
    }

    public static String solution(int[] numbers, String hand) {
        StringBuilder answer = new StringBuilder();
        int L_position = 10;
        int R_position = 12;
        for (int num : numbers) {
            if (num == 1 || num == 4 || num == 7) {
                answer.append("L");
                L_position = num;
            } else if (num == 3 || num == 6 || num == 9) {
                answer.append("R");
                R_position = num;
            } else {
                if (num == 0) {
                    num = 11;
                }
                if (comp_dist(L_position, num) < comp_dist(R_position, num)) {
                    answer.append("L");
                    L_position = num;
                } else if (comp_dist(L_position, num) > comp_dist(R_position, num)) {
                    answer.append("R");
                    R_position = num;
                } else {
                    if (hand.equals("right")) {
                        answer.append("R");
                        R_position = num;
                    } else {
                        answer.append("L");
                        L_position = num;
                    }
                }
            }
        }
        return answer.toString();
    }

    public static void main(String[] args) {
        int[] numbers = new int[]{1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5};
        String hand = "right";
        String result = solution(numbers, hand);
        System.out.println(result);
    }
}

아쉽지만 comp_dist함수를 직접 고안하지 못했다... 여러 방법은 떠올랐지만 무엇이 가장 적합한 방법인지 아직 고르는 능력이 부족하다.