반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

undefined

[프로그래머스] 키패드 누르기 -JS 본문

Coding Test

[프로그래머스] 키패드 누르기 -JS

JavaScripter 2022. 6. 22. 17:57
반응형

문제 설명


문제 풀이

function solution(numbers, hand) {
//     배열에 값을 부여
    const list ={ 1:[0,0], 2:[0,1], 3:[0,2],4:[1,0],5:[1,1],6:[1,2],7:[2,0],
        8:[2,1],9:[2,2],'*':[3,0],0:[3,1],'#':[3,2]}
   
    let answer = ''
//     손가락의 초기값
    let left = list['*']
    let right = list['#']
    
    for(let n of numbers) {
//         n의 현재위치
        let[i,j] = list[n]
        
//         L[1,4,7,] or R[3,6,9] 그리고 각 손가락의 현재위치 업데이트
        if(j === 0) {
            answer += 'L'
            left = list[n]
        } else if (j ===2) {
            answer += 'R'
            right = list[n]
        } else {
//             [2,5,8,0]일때
//             현재 n의 위치에서 left right의 각 현재 위치를 빼서 각 거리를 구해줌
            let leftD = Math.abs(i-left[0])+Math.abs(j-left[1])
            let rightD = Math.abs(i-right[0])+Math.abs(j-right[1])
            
//             거리가 같을때
            if(leftD === rightD) {
                if(hand==='left'){
                    answer+='L'
                    left = list[n]
                } else {
                    answer+='R'
                    right=list[n]
                }
//                 left의 거리가 더 멀때
            } else if (leftD > rightD) {
                    answer+='R'
                    right=list[n]
//                 right의 거리가 더 멀때
                } else if (leftD < rightD) {
                    answer+='L'
                    left = list[n]
                }
        }
    }
    return answer
}

배운 점

1. 객체 배열로 만들고 각 배열에 값을 지정해줄 수 있다.

 

2. let [i,j] = list[n] // 분해하지 않아도 각 배열의 구성요소들을 더 쉽게 이용할 수 있다.

반응형

'Coding Test' 카테고리의 다른 글

[프로그래머스] 실패율 -JS  (0) 2022.06.25
[프로그래머스] 내적 - JS  (0) 2022.06.23
[프로그래머스] 최소 직사각형 -JS  (0) 2022.06.22
[프로그래머스] 폰켓몬 -JS  (0) 2022.06.20
[프로그래머스] 체육복 -JS  (0) 2022.06.19
Comments