python/알고리즘 문제풀이

[프로그래머스 | 파이썬3] 키패드 누르기

빛날희- 2021. 5. 21. 14:41

https://programmers.co.kr/learn/courses/30/lessons/67256/solution_groups?language=python3&type=my 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


def distance(left_loc, right_loc, mid_loc):
    return [abs(left_loc[0]-mid_loc[0])+abs(left_loc[1]-mid_loc[1]), abs(right_loc[0]-mid_loc[0])+abs(right_loc[1]-mid_loc[1])]

def solution(numbers, hand):
    num= [[1,4,7,"*"],[2,5,8,0],[3,6,9,"#"]]
    result=""
    left_loc=[0,3]
    mid_loc=[1,0]
    right_loc=[2,3]
    for i in numbers:
        if i in num[0]: result+="L"; left_loc= [0,num[0].index(i)]
        if i in num[2]: result += "R"; right_loc= [2, num[2].index(i)]
        if i in num[1]: 
            mid_loc[1]= num[1].index(i)
            lst= distance(left_loc, right_loc, mid_loc)
            if lst[0]>lst[1]: result+="R"; right_loc=[1, num[1].index(i)]
            elif lst[0]<lst[1]: result +="L"; left_loc= [1,num[1].index(i)]
            else: 
                if hand[0].upper() =="L": result+="L"; left_loc= [1,num[1].index(i)]
                else: result += "R"; right_loc=[1,num[1].index(i)]
    return result