[プログラマー][Leve 1]キーボードを押す
質問する
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right"
1,4,7 -> L
3,6,9 -> R
2,5,8 -> 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다.
정답 ) "LRLLLRLLRRL"
コード#コード#
function solution(numbers, hand) {
var answer = '';
let left = [4, 1];
let right = [4, 3];
numbers.forEach(num=>{
if(num%3===2 || num === 0){
let center = [0, 2];
num === 0 ? center[0] = 4 : center[0] = Math.ceil(num/3);
let right_distance = getDistance(right, center);
let left_distance = getDistance(left, center);
if(right_distance < left_distance || (right_distance == left_distance && hand === 'right')){
answer += 'R';
right = center;
} else if(left_distance < right_distance || (right_distance == left_distance && hand === 'left')){
answer += 'L';
left = center;
}
} else if(num%3===1){
left = [Math.ceil(num/3), 1];
answer += 'L';
} else if(num%3===0){
right = [Math.ceil(num/3), 3];
answer += 'R';
}
})
return answer;
}
function getDistance(start, end){
return Math.abs(start[0]-end[0])+Math.abs(start[1]-end[1]);
}
ポスト
Reference
この問題について([プログラマー][Leve 1]キーボードを押す), 我々は、より多くの情報をここで見つけました https://velog.io/@dasom2d/프로그래머스Leve1-키패드누르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol