가오리의 코딩일기
[67256] 키패드 누르기 본문
https://programmers.co.kr/learn/courses/30/lessons/67256
function solution(numbers, hand) {
// 위치 찾는 함수
function findKey(key) {
let keypad = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
["*", 0, "#"],
];
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 3; j++) {
if (keypad[i][j] === key) {
return [i, j];
}
}
}
}
var answer = "";
let left = "*";
let right = "#";
for (let i of numbers) {
if (i === 1 || i === 4 || i === 7) {
answer += "L";
left = i;
} else if (i === 3 || i === 6 || i === 9) {
answer += "R";
right = i - 2;
} else {
let r = findKey(right);
let l = findKey(left);
let middle = findKey(i);
// 손과 키패드의 거리
let rr = Math.abs(r[0] - middle[0]) + Math.abs(r[1] - middle[1]);
let ll = Math.abs(l[0] - middle[0]) + Math.abs(l[1] - middle[1]);
if (rr === ll) {
// 거리가 같다면 오른손잡이 -> 'R', 왼손잡이 -> 'L'
hand === "right"
? ((right = i), (answer += "R"))
: ((left = i), (answer += "L"));
} else if (rr > ll) {
// 오른손의 거리가 멀다면
answer += "L";
left = i;
} else {
// 왼손의 거리가 멀다면
answer += "R";
right = i;
}
}
}
return answer;
}
- for ... of : 반복가능한 객체에 대해서 반복하고 각 개별 속성값에 대해 실행되는 문이 있는 사용자정의 반복 후크를 호출하는 루프 생성
'HTML+CSS+JavaScript > 프로그래머스' 카테고리의 다른 글
[64065] 튜플 (0) | 2022.06.19 |
---|---|
[42888] 오픈 채팅방 (0) | 2022.06.19 |
[42889] 실패율 (0) | 2022.06.19 |
[17681] (1차) 비밀지도 (0) | 2022.06.19 |
[17682] 다트 게임 (0) | 2022.06.17 |