2020 KACO実習-キーボードを押す


react学習とcapstone設計プロジェクトのため、しばらくcotteは行われていません😂
04.26解決の問題任堂🌷
キーボードを押す
def solution(numbers, hand):
    answer = ''
    lPhone=[1,4,7,'*']
    rPhone=[3,6,9,'#']
    mP=[2,5,8,0]
    lH=True
    rH=False
    lindex=3
    rindex=3
    
    for i in numbers:
    	#왼손 키패트
        if i==1 or i==4 or i==7:
            answer+='L'
            lH=True
            #왼손의 위치를 갱신
            lindex=lPhone.index(i)
            continue
        
        #오른손 키패드
        elif i==3 or i==6 or i==9:
            answer+='R'
            rH=True
            #오른손의 위치를 갱신
            rindex=rPhone.index(i)
            continue
        
        #가운데 키패드
        else :
            index=mP.index(i)
            rlen=abs(rindex-index)
            llen= abs(lindex-index)
            #둘 중 한손이 가운데 키패드가 아닐때
            if rH != lH:
                if rH : rlen +=1
                if lH : llen +=1
            
            if llen < rlen:
                answer+='L'
                lH=False
                lindex=index
            elif llen > rlen:
                answer+='R'
                rH=False
                rindex=index
            elif llen == rlen:
                if hand=='right':
                    answer+='R'
                    rH=False
                    rindex=index
                else:
                    answer+='L'
                    lH=False
                    lindex=index  
        
    return answer

いくつかのエラーのテストが発生します...😭😭😭😭
def solution(numbers, hand):
    answer = ''
    phone=[[3,1],[0,0],[0,1],[0,2], #0,1,2,3
           [1,0],[1,1],[1,2], #4,5,6
           [2,0],[2,1],[2,2], #7,8,9
          ]
    lh=[3,0] #'*'
    rh=[3,2] #'#'
    for i in numbers:
        if i==1 or i==4 or i==7:
            answer+='L'
            lh=phone[i]
        elif i==3 or i==6 or i==9:
            answer+='R'
            rh=phone[i]
        else:
            now=phone[i]
            l_dist=abs(now[0]-lh[0])+abs(now[1]-lh[1])
            r_dist=abs(now[0]-rh[0])+abs(now[1]-rh[1])
            if l_dist < r_dist :
                answer+='L'
                lh=now
            elif l_dist > r_dist:
                answer+='R'
                rh=now
            else :
                if hand=='right':
                    answer+='R'
                    rh=now
                else:
                    answer+='L'
                    lh=now
            
    return answer
左手のキーボード、右手のキーボードを問わず、携帯電話のインデックスを携帯電話番号とし、価格を位置とする.
効率が良く、精度100%のコードです.👍🐰🐰
コードが間違っている時に新しいのを取り替えるのも良い方法で、ほほほ