키패드 누르기 - javascript

DonQ·2022년 3월 29일
1

CodingTest

목록 보기
8/33
post-thumbnail

문제 (출처)

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

나의 접근

  • 역시 카카오 관련 문제들은 어렵다...

  • 거리를 어떻게 구할까 고민하다가 결국 다른사람들의 풀이를 참고 하였다.

  • 이번 기회로 거리 구하기에 대해 알았으니, 다음에는 꼭 내 힘으로 풀리라 !! 오늘의 배운점 및 교훈에서 좀 더 길게 써보겠드아!

풀이

function solution(numbers, hand) {
    let answer = '';
    let lH = '*';
    let rH = '#';
    const pos = {
        1 : [0, 0], 2 : [1, 0], 3 : [2, 0],
        4 : [0, 1], 5 : [1, 1], 6 : [2, 1],
        7 : [0, 2], 8 : [1, 2], 9 : [2, 2],
        '*' : [0, 3], 0 : [1, 3], '#' : [2, 3]
    };
    function dist (num, lH, rH, pos, hand){
        let dist_L = Math.abs(pos[lH][0] - pos[num][0]) + 
                    Math.abs(pos[lH][1] - pos[num][1]);
        let dist_R = Math.abs(pos[rH][0] - pos[num][0]) + 
                    Math.abs(pos[rH][1] - pos[num][1]);
        if(dist_L === dist_R){
            return hand === 'left' ? 'L' : 'R'
        }
        return dist_L < dist_R ? 'L' : 'R';
    }
    for (let num of numbers){
        if (num % 3 === 1){
            answer += 'L';
            lH = num;
        }
        else if (num != 0 && num % 3 === 0){
            answer += 'R';
            rH = num;
        }
        else {
            answer += dist(num, lH, rH, pos, hand);
            answer[answer.length - 1] === 'L' ? lH = num : rH = num
        }
    }
   
    return answer;
}

오늘의 배운점 및 교훈

  • 패드간의 거리를 구하기 위해서 패드마다 x축 y축을 지정해주고, 서로 빼준다음 절대값을 씌우고 더해주면 된다는 것을 알게되었다.
    다음에도 거리 구하기 문제가 나온다면 절대 당황하지 말아야겠다.

  • 삼항조건연산자가 정말 많이 쓰인다... 또한 삼항조건연사자를 쓰면 굉장히 깔끔하게 한줄로 끝난다 .. 보기 좋다 ..

  • 내가 원하는 정보를 가져오기 위해 어떤 변수를 지정 해야하는지 설정하는것도 매우 중요하다 ... 이러한 능력은 코테문제 계속 풀다보면 나아지겠지... 나아질꺼야 ....
    나아질꺼야

profile
꾸준히 쌓아가는 코딩 Study

0개의 댓글

관련 채용 정보