티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/67256

 

코딩테스트 연습 - 키패드 누르기

[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"

programmers.co.kr

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
51
52
class Solution {
    int[] right = {32};
    int[] left = {30};
    String handed;
        
    int[][] pad = {
        {31}, // 0
        {00}, // 1
        {01},
        {02},
        {10},
        {11},
        {12},
        {20},
        {21},
        {22}  // 9
    };
    
    public String solution(int[] numbers, String hand) {
        StringBuilder answer = new StringBuilder();
        handed = hand.toUpperCase().charAt(0)+"";
        
        for(int i=0; i<numbers.length; i++) {
            String tmp = checkHand(numbers[i]);
            answer.append(tmp);
            moveHand(numbers[i], tmp);
        }
        
        return answer.toString();
    }
   
// 어느 손으로 누를지 확인
    String checkHand(int num) {
        if(num==0 || num%3==2) {
            int r = Math.abs(right[0- pad[num][0]) + Math.abs(right[1- pad[num][1]);
            int l = Math.abs(left[0- pad[num][0]) + Math.abs(left[1- pad[num][1]);
            
            if(r-l>0return "L";
            else if(r-l<0return "R";
            else return handed;
            
        } else if(num%3==1return "L";
        else return "R";
    }

// 손 옮기기
    void moveHand(int num, String h) {
        if(h.equals("R")) {
            right = pad[num];
        } else {
            left = pad[num];
        }
    }
}
cs
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
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
글 보관함