다른 사람 풀이
function solution(numbers, hand){
const keypad = {
1:[0,3], 2:[1,3], 3:[2,3],
4:[0,2], 5:[1,2], 6:[2,2],
7:[0,1], 8:[1,1], 9:[2,1],
'*':[0,0], 0:[1,0], '#':[2,0],
}
const len = numbers.length;
let answer = '';
let leftFinger = '*';
let rightFinger = '#';
for (let i = 0; i < len; i++) {
let num = numbers[i];
if (num % 3 === 1) {
answer += "L";
leftFinger = num;
}
else if (num !== 0 && num % 3 === 0) {
answer += "R";
rightFinger = num;
}
else {
answer += getDistance(keypad, num, hand, leftFinger, rightFinger);
answer[answer.length - 1] === "L"
? (leftFinger = num)
: (rightFinger = num);
}
}
return answer;
}
function getDistance(keypad, num, hand, leftFinger, rightFinger) {
const handed = hand === "left" ? "L" : "R";
const left =
Math.abs(keypad[num][0] - keypad[leftFinger][0]) +
Math.abs(keypad[num][1] - keypad[leftFinger][1]);
const right =
Math.abs(keypad[num][0] - keypad[rightFinger][0]) +
Math.abs(keypad[num][1] - keypad[rightFinger][1]);
if (left === right) return handed;
return left < right ? "L" : "R";
}
- 몇 가지는 아이디어를 떠올렸는데, 결국 스스로 풀지는 못했다. ㅜㅜ 분발해야겠다!
'IT,Programming > 프로그래머스_코딩테스트_javascript' 카테고리의 다른 글
프로그래머스 코딩테스트 JavaScript 풀이 _문자열 내림차순으로 배치하기 (0) | 2022.02.21 |
---|---|
프로그래머스 코딩테스트 JavaScript 풀이 _두 개 뽑아서 더하기 (0) | 2022.02.20 |
프로그래머스 코딩테스트 JavaScript 풀이 _체육복(최신버전) (0) | 2022.02.18 |
프로그래머스 코딩테스트 JavaScript 풀이 _k번째 수 (0) | 2022.02.18 |
프로그래머스 코딩테스트 JavaScript 풀이 _짝수와 홀수 (0) | 2022.02.18 |