プログラマー|キーボードJS
2449 ワード
難易度:Level.1
言語:Javascript
出題履歴:2020ココア実習
スマートフォンのキーボードを押すには、条件番号が必要です.
両手を使用する場合は、キーボードをどの指で押したかを確認する必要があります.
また、現在の指の位置を表示する配列を作成することもできます.
ある手で押さえてマークすると、
指の位置を座標にします.
今度は真ん中の番号をフィルタします
現在クリックすべき番号の座標を指定します.
現在の指の位置から番号までの移動量を算出します.
同じ数字であれば、どのハンドルなのか判断し、対応する手で押してください.
手で押して問題を解決させてくれました
時間がかかりましたが….でも成功した...!
言語:Javascript
出題履歴:2020ココア実習
❓ Question
スマートフォンのキーボードを押すには、条件番号が必要です.
両手を使用する場合は、キーボードをどの指で押したかを確認する必要があります.
📝 My Solution
フルプールコード 👈🏻 クリックしてGithubに移動
function solution(numbers, hand) {
var answer = "";
const numL = [1,4,7,'*'];
const numR = [3,6,9,'#'];
const numC = [2,5,8,0];
let posL = [0,3];
let posR = [0,3];
let posC = [1,-1];
まず指で押せる番号と真ん中の番号を押しますまた、現在の指の位置を表示する配列を作成することもできます.
for (let i = 0; i<numbers.length; i++) {
if (numL.indexOf(numbers[i]) >= 0) {
answer += "L";
posL = [0, numL.indexOf(numbers[i])];
} else if (numR.indexOf(numbers[i]) >= 0) {
answer += "R";
posR = [0, numR.indexOf(numbers[i])];
}
まず、指2本で押すことができる番号があればある手で押さえてマークすると、
指の位置を座標にします.
else {
posC = [1, numC.indexOf(numbers[i])];
let routeL = Math.abs(posC[0]-posL[0]) + Math.abs(posC[1]-posL[1]);
let routeR = Math.abs(posC[0]-posR[0]) + Math.abs(posC[1]-posR[1]);
if (routeL === routeR) {
if (hand === 'right') {
answer += 'R';
posR = [1, numC.indexOf(numbers[i])];
} else {
answer += 'L';
posL = [1, numC.indexOf(numbers[i])];
}
}
もしあなたが濾過したら、指の番号を押すしかありません.今度は真ん中の番号をフィルタします
現在クリックすべき番号の座標を指定します.
現在の指の位置から番号までの移動量を算出します.
同じ数字であれば、どのハンドルなのか判断し、対応する手で押してください.
else {
if (routeL < routeR) {
answer += 'L';
posL = [1, numC.indexOf(numbers[i])];
} else {
answer += 'R';
posR = [1, numC.indexOf(numbers[i])];
}
}
}
}
return answer
}
2つの値が違うと、数字が小さい方が近い方なので.手で押して問題を解決させてくれました
結果
時間がかかりましたが….でも成功した...!
Reference
この問題について(プログラマー|キーボードJS), 我々は、より多くの情報をここで見つけました https://velog.io/@sstaar91/Algorithm-Programmers-KeyPadテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol