본문 바로가기
Problem Solving

[프로그래머스] L1 키패드 누르기 / 2020 카카오 인턴십 (Java)

by JYHAN 2020. 12. 19.

카카오

[프로그래머스] L1 키패드 누르기 / 2020 카카오 인턴십

[풀이]

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.util.*;
class Solution {
    public String solution(int[] numbers, String hand) {
        String answer = "";
        int[][] num = new int[][]{
            {3,1},
            {0,0},{0,1},{0,2},
            {1,0},{1,1},{1,2},
            {2,0},{2,1},{2,2},
            {3,0},{3,1},{3,2}
        };
        int l = 10, r = 12;
        int lX, lY, rX, rY;
        for(int i=0; i<numbers.length; i++){
            int tN = numbers[i];
            if(tN==1 || tN==4 || tN==7) {
                l = tN;
                answer += "L";
            }else if(tN==3 || tN==6 || tN==9){
                r = tN;
                answer += "R";
            }else{
                int x = num[tN][0];
                int y = num[tN][1];
                lX = num[l][0];
                lY = num[l][1];
                rX = num[r][0];
                rY = num[r][1];
                int lD = Math.abs(x-lX) + Math.abs(y-lY);
                int rD = Math.abs(x-rX) + Math.abs(y-rY);
                if(lD<rD){
                    l = tN;
                    answer += "L";
                }else if(lD>rD){
                    r = tN;
                    answer += "R";
                }else{
                    if(hand.equals("left")){
                        l = tN;
                        answer += "L";
                    }else{
                        r = tN;
                        answer += "R";
                    }
                }
            }
        }
        return answer;
    }
}
cs

댓글