Kakaoキーボードを押す
質問:
( https://programmers.co.kr/learn/courses/30/lessons/67256 )
最初は二次元配列を使いたくなかった.
だから私はコードを書いて、#と*の代わりに数字を使って、それから小さい手で数字の和の差の絶対値を押して、しかしすぐに問題を発見しました.
そこで,2次元配列に変換する際には,行を3のシェア,列を3の残り+1に分けて解くことを試みたが,演算中にエラーが発生した.
こうして地面をかき集めると...最初の考えをよく表すコードが見つかった.
https://life-of-panda.tistory.com/75
横距離abs(右(または左)-num)%3、縦距離abs(右-num)/3、和(divmod(右-num,3)で距離を求めることができます!
そして手は同じ状況で左か右かを確認するだけでいいので、最初から区別したいようなので音量だけ増やしました.
配列を直接描いても,3とインデックスの関係が分かっても,実際に実現することは難しい.
通常、以下のように座標をディクシャナに格納し、問題を解決するために使用します.
( https://programmers.co.kr/learn/courses/30/lessons/67256 )
最初は二次元配列を使いたくなかった.
だから私はコードを書いて、#と*の代わりに数字を使って、それから小さい手で数字の和の差の絶対値を押して、しかしすぐに問題を発見しました.
def solution(numbers, hand):
answer = ''
l = 10 #왼손 오른손의 위치 저장
r = 12
left = [1,4,7]
right = [3,6,9]
#목표치와의 차의 절대값 작은 손이 누름
if hand == "right":
for num in numbers:
if num in left:
l = num
answer += "L"
elif num in right:
r = num
answer += "R"
else:
if(abs(num-r) <= abs(num-l)):
r =num
answer += "R"
else:
l =num
answer+="L"
else:
for num in numbers:
if num in left:
l = num
answer += "L"
elif num in right:
r = num
answer += "R"
else:
if(abs(num-r) <abs(num-l)):
r =num
answer += "R"
else:
l =num
answer+="L"
#0을 누르려 할 때 #보다 7이 가깝게 계산되는 문제가 있음.
return answer
与えられたリストに0がある場合は、11に変更してみましたが失敗しました.そこで,2次元配列に変換する際には,行を3のシェア,列を3の残り+1に分けて解くことを試みたが,演算中にエラーが発生した.
こうして地面をかき集めると...最初の考えをよく表すコードが見つかった.
https://life-of-panda.tistory.com/75
横距離abs(右(または左)-num)%3、縦距離abs(右-num)/3、和(divmod(右-num,3)で距離を求めることができます!
そして手は同じ状況で左か右かを確認するだけでいいので、最初から区別したいようなので音量だけ増やしました.
配列を直接描いても,3とインデックスの関係が分かっても,実際に実現することは難しい.
通常、以下のように座標をディクシャナに格納し、問題を解決するために使用します.
def solution(numbers, hand):
answer = ''
key_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)}
left = [1,4,7]
right = [3,6,9]
lhand = '*'
rhand = '#'
for i in numbers:
if i in left:
answer += 'L'
lhand = i
elif i in right:
answer += 'R'
rhand = i
else:
curPos = key_dict[i]
lPos = key_dict[lhand]
rPos = key_dict[rhand]
ldist = abs(curPos[0]-lPos[0]) + abs(curPos[1]-lPos[1])
rdist = abs(curPos[0]-rPos[0]) + abs(curPos[1]-rPos[1])
if ldist < rdist:
answer += 'L'
lhand = i
elif ldist > rdist:
answer += 'R'
rhand = i
else:
if hand == 'left':
answer += 'L'
lhand = i
else:
answer += 'R'
rhand = i
return answer
Reference
この問題について(Kakaoキーボードを押す), 我々は、より多くの情報をここで見つけました https://velog.io/@horcrux/카카오-키패드-누르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol