[#67256]2020 KACA実習生キーボード-JavaScriptを押す
15311 ワード
問題の説明
スマートフォンの電話キーボードの各スペースには、次の数字があります.
この電話のキーボードには、左手と右手の親指で数字を入力したいだけです.
最初の左手親指は*キーボードから始まり、右手親指は#キーボードの位置から始まり、親指を使うルールは以下の通りです.
親指は上下左右4方向にしか移動できず、キーボードを動かすセル距離は1です.
左の列に1、4、7の数字を3つ入力する場合は、左手親指を使用します.
右の列の3つの数字3、6、9を入力する場合は、右手親指を使用します.
中間列の4つの数字2、5、8、0を入力する場合は、2つの親指の現在のキーボード位置に近い親指を使用します.
4-1. 2つの親指の距離が等しい場合は、右利きは右手親指、左利きは左手親指を使用します.
solution関数を完了して順序番号を示す配列番号、左利きか右利きかを示す文字列番号をパラメータとすると、各番号の親指が左手か右手かを示す連続文字列形式で返されます.
[制限]
I/O例
I/O例説明
I/O例#1
順番は[1,3,4,5,8,2,4,5,9,5]、右利きです.
したがって、
"LRLLLRLLRRL"
に戻ります.I/O例#2
左利きは[7,0,8,2,8,3,1,5,7,6,2]を押して、使用する手は
"LRLLRRLLLRR"
です.I/O例#3
右利きは[1,2,3,4,5,6,7,8,9,0]の順に押し,使用した手は
"LLRLLRLLRL"
であった.に答える
1, 4, 7
左手3, 6, 9
右手を使うので、残りの値で判別します.(この場合、キーボード0にご注意ください!)次いで、
2, 5, 8, 0
は、座標キーPadを用いて距離を比較する.같을 경우
が左利きか右利きかを確認して判別する.다를 경우
より近い手でfunction solution(numbers, hand) {
let answer = '';
let leftHand = '*';
let rightHand = '#';
// keyPad 좌표화 참고
const keyPad = {
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]
};
const moveLeft = (num) => {
leftHand = num;
answer += 'L';
};
const moveRight = (num) => {
rightHand = num;
answer += 'R';
};
const distance = (lh, rh, num) => {
const leftDistance = Math.abs(keyPad[lh][0] - keyPad[num][0]) + Math.abs(keyPad[lh][1] - keyPad[num][1]);
const rightDistance = Math.abs(keyPad[rh][0] - keyPad[num][0]) + Math.abs(keyPad[rh][1] - keyPad[num][1]);
if(leftDistance === rightDistance){
if(hand === 'left') return moveLeft(num);
else if(hand ==='right') return moveRight(num);
}
if(leftDistance > rightDistance){
return moveRight(num);
} else {
return moveLeft(num);
}
};
numbers.map( number => {
// 좌측일 때
if(number % 3 === 1){
return moveLeft(number);
}
// 우측일 때
if( number !== 0 && number % 3 === 0){
return moveRight(number);
}
// 중앙일 때
distance(leftHand, rightHand, number);
});
return answer;
}
Reference
この問題について([#67256]2020 KACA実習生キーボード-JavaScriptを押す), 我々は、より多くの情報をここで見つけました https://velog.io/@jiseong/67256-2020-카카오-인턴십-키패드-누르기-JavaScriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol