Algorithm : Programmers - 키패드 누르기

코일·2022년 1월 10일
0

algorithm

목록 보기
37/37
post-thumbnail

👉 문제



🤔생각해보기

조건에 충족하도록 작성


🐱‍👤모범답안

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

abs() 예제

정수 :
abs(-1)
>>1
실수 :
abs(-1.75)
>>1.75
복소수 :
abs(1+1j)
>>1.4142135623730951

ref.
https://technote.kr/239 [TechNote.kr]

profile
How do you get what you want?🤔🤔

0개의 댓글