[プログラマー]キーボード/67256回/python/2020ココア実習
2393 ワード
💡質問する
スマートフォンの電話キーボードの各スペースには、次の数字があります.
この電話のキーボードには、左手と右手の親指で数字を入力したいだけです.
最初の左手親指は*キーボードから始まり、右手親指は#キーボードの位置から始まり、親指を使うルールは以下の通りです.
4-1. 2つの親指の距離が等しい場合は、右利きは右手親指、左利きは左手親指を使用します.
solution関数を完了して順序番号を示す配列番号、左利きか右利きかを示す文字列番号をパラメータとすると、各番号の親指が左手か右手かを示す連続文字列形式で返されます.
せいげんじょうけん
にゅうしゅつりょく
numbershandresult[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5]"right""LRLLLRLLRRL"[7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2]"left""LRLLRRLLLRR"[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]"right""LLRLLRLLRL"
📖私が書いたコード
def solution(numbers, hand):
answer = ''
# 1 2 3
# 4 5 6
# 7 8 9
# 10 11 12
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),
10:(3,0),0:(3,1),12:(3,2)
}
beforeL,beforeR=10,12
for n in numbers:
if n in (1,4,7):
answer+='L'
beforeL=n
elif n in (3,6,9):
answer+='R'
beforeR=n
elif n in (2,5,8,0):
left=abs(keypad[n][0]-keypad[beforeL][0])+abs(keypad[n][1]-keypad[beforeL][1])
right=abs(keypad[n][0]-keypad[beforeR][0])+abs(keypad[n][1]-keypad[beforeR][1])
if left<right:
answer+="L"
beforeL=n
elif right<left:
answer+='R'
beforeR=n
else:
if hand=="right":
answer+="R"
beforeR=n
else:
answer+='L'
beforeL=n
return answer
質問元:https://programmers.co.kr/learn/courses/30/lessons/67256Reference
この問題について([プログラマー]キーボード/67256回/python/2020ココア実習), 我々は、より多くの情報をここで見つけました https://velog.io/@wjdtmdgml/프로그래머스키패드-누르기67256번파이썬Python2020-카카오-인턴십テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol