티스토리 뷰

정확도 40%

 

뭐가 문제일까..

 

import java.util.*;
class Solution {
    public static String caculateLength(int number, String leftNow, String rightNow, String hand) {
        String findNum = Integer.toString(number);
        String result = "";
        Xy numberPosition = new Xy();
        Xy leftPosition = new Xy();
        Xy rightPosition = new Xy();

        int leftMinus = 0;
        int rightMinus = 0;
        //(1. 2) (0.0) (2.0) 
        String keyPad[][] = {
                {"1", "2", "3"},
                {"4", "5", "6"},
                {"7", "8", "9"},
                {"*", "0", "#"}
        };

        for(int i=0; i<keyPad.length; i++) {
            for(int j=0; j<keyPad[0].length; j++) {
                if(keyPad[i][j].equals(findNum)) {
                    numberPosition.x = i;
                    numberPosition.y = j;
                } else if(keyPad[i][j].equals(leftNow)) {
                    leftPosition.x = i;
                    leftPosition.y = j;
                } else if(keyPad[i][j].equals(rightNow)) {
                    rightPosition.x = i;
                    rightPosition.y = j;
                }
            }
        }
        
        leftMinus = Math.abs(numberPosition.x - leftPosition.x) + Math.abs(numberPosition.y - leftPosition.y);

        rightMinus = Math.abs(numberPosition.x - rightPosition.x) + Math.abs(numberPosition.y - rightPosition.y);

        if(rightMinus > leftMinus) {
            result = "L";
        } else if(leftMinus > rightMinus) {
            result = "R";
        } else if(leftMinus == rightMinus) {
            if(hand.equals("right")) {
                result = "R";
            } else {
                result = "L";
            }
        }

        return result;
    }

    public String solution(int[] numbers, String hand) {
        String answer = "";

        String leftNow = "*";
        String rightNow = "#";

        StringBuffer buffer = new StringBuffer();

        List<Integer> left = Arrays.asList(1, 4, 7);
        List<Integer> right = Arrays.asList(3, 6, 9);
        
        for(int number : numbers) {
            if(left.contains(number)) {
                leftNow = Integer.toString(number);
                buffer.append("L");
            } else if(right.contains(number)) {
                rightNow = Integer.toString(number);
                buffer.append("R");
            } else {
                String result = caculateLength(number, leftNow, rightNow, hand);
                buffer.append(result);
                if(result.equals("R")) {
                    rightNow = Integer.toString(number);
                } else {
                    leftNow = Integer.toString(number);
                }
            }
        }
        answer = buffer.toString();
        return answer;
    }
}

class Xy {
    int x;
    int y;
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   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
글 보관함