キーボードを押す
私が作成したコード:
各数字をリストにマッピングし、ディクシャナを形成します.
計算距離:A(a 1,a 2),B(b 1,b 2)の2点,ABの距離(長さ)を求めると(b 1−a 1)^2+(b 2−a 2)^2を求める.
2番目に私が書いたコード:
ピタゴラスでは解けません
->x移動量とy移動量の合計のみで距離を測定します.
押す数字が8なので左手が4右手が2右手が右利きの場合に問題が発生します
質問で与えられた距離で計算すると、左手と右手の距離が8から「2」なので右手で押しますが、座標を置いて距離で計算するだけなら左手で押します.
ソリューション:
x移動量、y移動量はどのように求めますか?
思ったより簡単だったなぁ~
知っておきたいのは、
ディック・シャナリーの価値に近づくには2つの方法があります
1)
1つの違いは、1つ目のキーが存在しないキーを使用して値を取得しようとするとエラーが発生し、2つ目はnoneを返します.
def solution(numbers, hand):
answer = ''
tmpL=''
tmpR=''
for x in numbers:
if x in (1, 4, 7):
answer+=L
elif x in (3, 6, 9):
answer+=R
else:
難しすぎます...各数字をリストにマッピングし、ディクシャナを形成します.
計算距離:A(a 1,a 2),B(b 1,b 2)の2点,ABの距離(長さ)を求めると(b 1−a 1)^2+(b 2−a 2)^2を求める.
2番目に私が書いたコード:
def solution(numbers, hand):
answer = ''
dict={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]}
lastL=dict['*']
lastR=dict['#']
for x in numbers: #key로 value얻는법 함수:get()
if x in (1, 4, 7):
answer+='L'
lastL=dict.get(x)
elif x in (3, 6, 9):
answer+='R'
lastR=dict.get(x)
else:
a=dict.get(x)
if ((a[0]-lastL[0])**2)+((a[1]-lastL[1])**2)==((a[0]-lastR[0])**2)+((a[1]-lastR[1])**2):
if hand=="left":
answer+='L'
lastL=dict.get(x)
else:
answer+='R'
lastR=dict.get(x)
elif ((a[0]-lastL[0])**2)+((a[1]-lastL[1])**2)<((a[0]-lastR[0])**2)+((a[1]-lastR[1])**2):
answer+='L'
lastL=dict.get(x)
else:
answer+='R'
lastR=dict.get(x)
return answer
テストケースは13~20回不合格.ピタゴラスでは解けません
->x移動量とy移動量の合計のみで距離を測定します.
押す数字が8なので左手が4右手が2右手が右利きの場合に問題が発生します
質問で与えられた距離で計算すると、左手と右手の距離が8から「2」なので右手で押しますが、座標を置いて距離で計算するだけなら左手で押します.
ソリューション:
x移動量、y移動量はどのように求めますか?
思ったより簡単だったなぁ~
def solution(numbers, hand):
answer = ''
dict={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]}
lastL=dict['*']
lastR=dict['#']
for x in numbers: #key로 value얻는법 함수:get()
if x in (1, 4, 7):
answer+='L'
lastL=dict.get(x)
elif x in (3, 6, 9):
answer+='R'
lastR=dict.get(x)
else: #여기 구하는게 관건.
a=dict.get(x)
if (abs(a[0]-lastL[0]))+(abs(a[1]-lastL[1]))==(abs(a[0]-lastR[0]))+(abs(a[1]-lastR[1])):
if hand=="left":
answer+='L'
lastL=dict.get(x)
else:
answer+='R'
lastR=dict.get(x)
elif (abs(a[0]-lastL[0]))+(abs(a[1]-lastL[1]))<(abs(a[0]-lastR[0]))+(abs(a[1]-lastR[1])):
answer+='L'
lastL=dict.get(x)
else:
answer+='R'
lastR=dict.get(x)
return answer
终わります!知っておきたいのは、
ディック・シャナリーの価値に近づくには2つの方法があります
1)
dict['*']
2)dict.get('*')
get関数を使用します.1つの違いは、1つ目のキーが存在しないキーを使用して値を取得しようとするとエラーが発生し、2つ目はnoneを返します.
Reference
この問題について(キーボードを押す), 我々は、より多くの情報をここで見つけました https://velog.io/@kscvv232/키패드-누르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol