본문 바로가기

알고리즘

[카카오 인턴] 키패드 누르기

class Solution {
    public String solution(int[] numbers, String hand) {
        String answer = "";
        int[][] numIndex = {
            {3,1},{0,0},{0,1},{0,2},{1,0},{1,1},{1,2},{2,0},{2,1},{2,2}
        };
        int[] leftIndex = {3,0};
        int[] rightIndex = {3,2};
        
        for(int i = 0 ; i < numbers.length ; i++) {
            if(numbers[i] == 1 || numbers[i] == 4 || numbers[i] == 7){
                answer += "L";
                leftIndex = numIndex[numbers[i]];
            }else if(numbers[i] == 3 || numbers[i] == 6 || numbers[i] == 9){
                answer += "R";
                rightIndex = numIndex[numbers[i]];
            } else {
                int left = Math.abs(numIndex[numbers[i]][0]-leftIndex[0]) 
                    + Math.abs(numIndex[numbers[i]][1]-leftIndex[1]);
                
                int right = Math.abs(numIndex[numbers[i]][0]-rightIndex[0]) 
                    + Math.abs(numIndex[numbers[i]][1]-rightIndex[1]);
                
                if( left > right || (left == right && hand.equals("right")) ){
                    answer += "R";
                    rightIndex = numIndex[numbers[i]];
                } else if(right > left || (left == right && hand.equals("left"))){
                    answer += "L";
                    leftIndex = numIndex[numbers[i]];
                } 
            }
            
            
        }
        System.out.println(answer);
        return answer;
    }
}

 

풀이 ) 넘버 좌표에 왼손과 오른손 현재 좌표를 뺀 절대값을 구하면 가까운 위치를 구 할 수 있다

 

질문하기 눌러서 다른 사람꺼 분석하고 이해 하는데 2시간 직접 문제 해결 하는데 1시간

 

넘배열에 좌표를 지정해서 for문 한번으로 해결해서 뿌듯 했지만 채첨하기 눌러서 결과보니 나와 비슷한 방식으로 해결 한게 바로 노출.......

#문제는 프로그래머스 사이트 참조

'알고리즘' 카테고리의 다른 글

Summer/Winter Coding(~2018) 예산  (0) 2021.09.29
형변환 및 기타  (0) 2021.09.24