undefined
[프로그래머스] 키패드 누르기 -JS 본문
반응형
문제 설명
문제 풀이
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