프로그래머스-키패드 누르기

이호영·2022년 4월 5일
0

프로그래머스-Level.1

목록 보기
13/14
class Solution {
    public String solution(int[] numbers, String hand) {
        String ans = "";
        int[][] keypad = {{3, 1},
                {0, 0}, {0, 1}, {0, 2},
                {1, 0}, {1, 1}, {1, 2},
                {2, 0}, {2, 1}, {2, 2}};
        int[] leftHand = {3, 0};
        int[] rightHand = {3, 2};

        for (int num : numbers) {
            int[] numpos = keypad[num];
            if (numpos[1] == 0) {
                ans +="L";
                leftHand = numpos;
            } else if (numpos[1] == 2) {
                ans +="R";
                rightHand = numpos;
            } else {
                int leftdist = Math.abs(leftHand[0] - numpos[0])
                        + Math.abs(leftHand[1] - numpos[1]);
                int rightdist = Math.abs(rightHand[0] - numpos[0])
                        + Math.abs(rightHand[1] - numpos[1]);

                if(leftdist<rightdist){
                    ans+="L";
                    leftHand=numpos;
                }else if(leftdist>rightdist){
                    ans+="R";
                    rightHand=numpos;
                }else if(hand.equals("left")){
                    ans+="L";
                    leftHand=numpos;
                }else {
                    ans+="R";
                    rightHand=numpos;
                }
            }
        }
        return ans;
    }
}

0개의 댓글