[Programmers](python)キーボード-2020ココア実習を押す
質問する
キーは、中間キーボードを押したときのアルゴリズムを書くことです!
番号を押すたびにその番号にリセット
左、右、中キーボードの条件をそれぞれ作成します.
中間キーボードを押すときに考慮すべき条件1.distance 2.hand
numbersリストで変数を処理し、その変数を上書きします.
左手の親指の番号はlast lで、
右手親指の番号はlast r, padでキーボードを左、中、右に分けます. for num in numbers:
if num in pad[0]:
answer += 'L'
last_l = numの数字が[1,4,7]の場合、
答えに「L」をつける
最後の数字は です
elif num in pad[2]:
answer += 'R'
last_r = numの数字は[3,6,9]のとき、
答えに「R」をつける
最後の数字は です
else:
num = 11 if num == 0 else num
abs l=abs(num-last l)#距離計算
abs_r = abs(num-last_r)の数字は[2,5,8]のとき、
「*」を10、0を11、「#」を12に設定
(|a-b|//3)+(|a-b|%3)(a-b)/3のシェア+(a-b)/3の残りの部分
|a-b| 変数に格納
if sum(divmod(abs_l, 3)) > sum(divmod(abs_r, 3)):
answer += 'R'
last_r = num (|a-b|//3) + (|a-b|%3)
最後の左数字からの距離:sum(divmod(abs l,3)
右上の数字からの距離:sum(divmod(abs r,3)
左の最後の数字と新しい数字の距離がもっと大きいと
もっと近い右手で+Rと答え、
右上の数字で を上書き
elif sum(divmod(abs_l, 3)) < sum(divmod(abs_r, 3)):
answer += 'L'
last_l = num位と同じ else:
if hand == 'left':
answer += 'L'
last_l = num
else:
answer += 'R'
last_r = num
return answer
条件文(キーボードを押すときの2番目の条件)
長い時間がかかった🥸 息を切らす
キーは、中間キーボードを押したときのアルゴリズムを書くことです!
🧩 首都コード
番号を押すたびにその番号にリセット
左、右、中キーボードの条件をそれぞれ作成します.
中間キーボードを押すときに考慮すべき条件1.distance 2.hand
🏁 説明する
def solution(numbers, hand):
answer = ''
last_l = 10
last_r = 12
pad = [[1,4,7],[2,5,8],[3,6,9]]
for num in numbers:
if num in pad[0]: # Left
answer += 'L'
last_l = num
elif num in pad[2]: # Right
answer += 'R'
last_r = num
else: # Middle'
num = 11 if num == 0 else num
abs_l = abs(num-last_l) # 거리 계산하기 위해
abs_r = abs(num-last_r)
if sum(divmod(abs_l, 3)) > sum(divmod(abs_r, 3)):
answer += 'R'
last_r = num
elif sum(divmod(abs_l, 3)) < sum(divmod(abs_r, 3)):
answer += 'L'
last_l = num
else:
if hand == 'left':
answer += 'L'
last_l = num
else:
answer += 'R'
last_r = num
return answer
answer = ''
last_l = 10
last_r = 12
pad = [[1,4,7],[2,5,8],[3,6,9]]
左手の親指の番号はlast lで、
右手親指の番号はlast r,
if num in pad[0]:
answer += 'L'
last_l = num
答えに「L」をつける
最後の数字は
elif num in pad[2]:
answer += 'R'
last_r = num
答えに「R」をつける
最後の数字は
else:
num = 11 if num == 0 else num
abs l=abs(num-last l)#距離計算
abs_r = abs(num-last_r)
📌 距離の計算
|a-b|
if sum(divmod(abs_l, 3)) > sum(divmod(abs_r, 3)):
answer += 'R'
last_r = num
最後の左数字からの距離:sum(divmod(abs l,3)
右上の数字からの距離:sum(divmod(abs r,3)
左の最後の数字と新しい数字の距離がもっと大きいと
もっと近い右手で+Rと答え、
右上の数字で
elif sum(divmod(abs_l, 3)) < sum(divmod(abs_r, 3)):
answer += 'L'
last_l = num
if hand == 'left':
answer += 'L'
last_l = num
else:
answer += 'R'
last_r = num
return answer
条件文
長い時間がかかった🥸 息を切らす
Reference
この問題について([Programmers](python)キーボード-2020ココア実習を押す), 我々は、より多くの情報をここで見つけました https://velog.io/@richeberry/프로그래머스python-키패드-누르기-2020-카카오-인턴십テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol