[스킬 체크 테스트] 키패드

Posted by 김성철

코딩테스트 - 키패드

class Solution {
public String solution(int[] numbers, String hand) {
String answer = “”;
int leftHand = 10;
int rightHand = 12;
int [][] pad = {
{0,0},{0,1},{0,2},
{1,0},{1,1},{1,2},
{2,0},{2,1},{2,2},
{3,0},{3,1},{3,2}
};
//System.out.println(pad[10][0] + “ “ + pad[10][1]);

    for(int i=0;i<numbers.length;i++){  
  
        if(numbers[i]==0){  
            numbers[i]=11;  
        }else if(numbers[i]%3==1){  
            leftHand = numbers[i];  
        }else if(numbers[i]%3==0){  
            rightHand = numbers[i];  
        }  
  
        int x = pad[numbers[i]-1][0];  
        int y = pad[numbers[i]-1][1];  
  
        int leftx=pad[leftHand-1][0];  
        int lefty=pad[leftHand-1][1];  
        int rightx=pad[rightHand-1][0];  
        int righty=pad[rightHand-1][1];  
  
        if( (changeMinus(x-leftx)+changeMinus(y-lefty)) > (changeMinus(x-rightx)+changeMinus(y-righty))){  
            answer +="R";  
            rightHand = numbers[i];  
  
        }else if( (changeMinus(x-leftx)+changeMinus(y-lefty)) < (changeMinus(x-rightx)+changeMinus(y-righty))){  
            answer +="L";  
            leftHand = numbers[i];  
  
            System.out.println();  
        }else{  
  
            if(hand.equals("right")){  
                rightHand = numbers[i];  
                answer +="R";  
            }else{  
                leftHand = numbers[i];  
                answer +="L";  
            }  
        }  

// System.out.println(x+ “ “ + y);

    }  
  
    return answer;  
}  
  
public int changeMinus(int a){  
    if(a<0){  
        return a*-1;  
    }else{  
        return a;  
    }  
}   }