[Phothon]プログラマー2020 KACA実習-キーボードを押す
プログラマー2020 KACA実習-キーボードを押す
問題のソース
2020 KACO実習-キーボードを押す
問題の説明)
スマートフォンの電話キーボードの各スペースには、次の数字があります.
この電話のキーボードには、左手と右手の親指で数字を入力したいだけです.
最初の左手親指は*キーボードから始まり、右手親指は#キーボードの位置から始まり、親指を使うルールは以下の通りです.
2つの親指の距離が等しい場合は、右利きは右手親指、左利きは左手親指を使用します.
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"
<Solution>
変数の使用:
1.(入力)整数-番号付けリスト
2.(入力)文字列-ハンドル
3.左手の現在位置
4.右手の現在位置
5.(出力)文字列(答え)
6.数値-座標辞書
7.(左手の距離を計算)
8.(右手距離算出値)
<メソッドとプロシージャ>
<Code>
def solution(numbers, hand):
print(numbers)
nowL='*'
nowR='#'
answer=''
dict={1:(0,0), 2:(1,0), 3:(2,0),
4:(0,1), 5:(1,1), 6:(2,1),
7:(0,2), 8:(1,2), 9:(2,2),
'*':(0,3), 0:(1,3), '#':(2,3)
}
for i in numbers:
if i in [1,4,7]:
answer=answer+'L'
nowL=i
elif i in [3,6,9]:
answer=answer+'R'
nowR=i
elif i in [2,5,8,0]:
leftCalc=abs(dict[i][0]-dict[nowL][0]) + abs(dict[i][1]-dict[nowL][1])
rightCalc=abs(dict[i][0]-dict[nowR][0])+ abs(dict[i][1]-dict[nowR][1])
if leftCalc<rightCalc:
answer=answer+'L'
nowL=i
elif leftCalc>rightCalc:
answer=answer+'R'
nowR=i
else:
if hand=='right':
answer=answer+'R'
nowR=i
else:
answer=answer+'L'
nowL=i
return answer
Reference
この問題について([Phothon]プログラマー2020 KACA実習-キーボードを押す), 我々は、より多くの情報をここで見つけました https://velog.io/@deminiveloper/python프로그래머스-2020-카카오-인턴십-키패드누르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol