[PRODrammers]キーボードを押す
13858 ワード
私の答え
function solution(numbers, hand) {
var answer = '' // 리턴할 값 (L과 R 로 이루어진 문자열)
let key = { //키패드의 번호와 그 위치값을 객체로 생성
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 curL = [3, 0] // 현재 왼손의 위치
let curR = [3, 2] // 현재 오른손의 위치
//---------------------------------------------------------------
const distance = (curHand, curKey) => { // 손 과 키 사이의 거리를 구하는 함수
// 세로 거리 + 가로 거리
return Math.abs(curHand[0] - curKey[0]) + Math.abs(curHand[1] - curKey[1])
}
//---------------------------------------------------------------
numbers.forEach(num => { // 배열을 순회하면서 answer에 문자열 추가
if (key[num][1] === 0) { // 왼손으로 눌러야 하는 키패드라면
curL = key[num]
answer += 'L'
} else if (key[num][1] === 2) { // 오른손으로 눌러야 하는 키패드라면
curR = key[num]
answer += 'R'
} else { // 어느손이 키와 가까운지 가늠해야 한다면
let disL = distance(curL, key[num])// 왼손 거리
let disR = distance(curR, key[num])// 오른손 거리
if (disL === disR) { // 거리가 같은경우
if (hand === "left") { // 왼손잡이
curL = key[num]
answer += 'L'
} else { // 오른손잡이
curR = key[num]
answer += 'R'
}
} else { // 거리가 다른 경우
if (disL > disR) { // 왼손의 거리가 더 멀 경우
curR = key[num]
answer += 'R'
} else { // 오른손의 거리가 더 멀 경우
curL = key[num]
answer += 'L'
}
}
}
})
return answer;
}
問題の説明
スマートフォンの電話キーボードから
左手と右手の親指だけ
数字を入力したいだけです.
最初の左手親指は*キーボードにあります
右手親指は#キーボードの位置から始まります.
親指を使うルールは次のとおりです.
親指は上下左右4方向にしか移動できません.
キーボードを移動するセルの距離は1です.
左の列の3つの数値
1,4,7を入力と、
左手親指を使う.
右側の列の3つの数値
3、6、9を入力と、
右手親指を使う.
中間列の4つの数字
2、5、8、0を入力と、
2つの親指の現在のキーボードの位置から
もっと近い親指を使います.
2つの親指の距離が等しい場合、
右利きは右手親指です.
左利きは左手親指を使います.
順番にクリックする番号を含む配列.
左利きか右利きかを示す文字列
パラメータが与えられると、
各番号の親指を押します.
左手か右手かを表す.
solution関数を完了して、連続する文字列を返してください.
せいげんじょうけん
numbers配列のサイズは1000を超えない.
numbers配列要素の値は0または9以下の整数です.
handは「left」または「right」です.
「左」は左利き、「右」は右利きを表す.
左手親指を使う場合はL、右手親指を使う場合はRを順番につなぎ、文字列で返します.
I/O例
#1
順番は[1,3,4,5,8,2,4,5,9,5]、右利きです.
そこで、「LLLLLLRLL」に戻ります.
#2
左利きが[7,0,8,2,8,3,1,5,7,6,2]の順になると、使用する手は「LR」になります.
#3
右利きを[1,2,3,4,5,6,7,8,9,0]の順に押すと、使用する手が「LLRLRLL」に変わります.
Reference
この問題について([PRODrammers]キーボードを押す), 我々は、より多くの情報をここで見つけました https://velog.io/@rhdgoehe2/Programmers-키패드-누르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol