[프로그래머스/파이썬] Level 1 키패드 누르기
https://programmers.co.kr/learn/courses/30/lessons/67256
알고리즘 분류
- 구현
문제풀이
숫자를 왼손 엄지손가락으로 누른 경우 L 추가와 함께 그 숫자의 인덱스(left)를 계속해서 갱신해준다.
오른손으로 누른 경우 마찬가지이다.
거리를 계산해서 가까운 손가락으로 누를 수 있도록 해준다.
소스코드
def solution(numbers, hand):
keypad=[[1,2,3],[4,5,6],[7,8,9],["*",0,"#"]]
result=[]
left,right=(3,0),(3,2)
def find_index(value):
for i in range(4):
for j in range(3):
if keypad[i][j]==value:
return (i,j)
for number in numbers:
if number in (1,4,7):
result.append("L")
left=find_index(number)
elif number in (3,6,9):
result.append("R")
right=find_index(number)
else:
x,y=find_index(number)
left_x,left_y=left
right_x,right_y=right
left_dis=abs(left_x-x)+abs(left_y-y)
right_dis=abs(right_x-x)+abs(right_y-y)
if left_dis<right_dis:
result.append("L")
left=find_index(number)
elif left_dis>right_dis:
result.append("R")
right=find_index(number)
else:
if hand=="left":
result.append("L")
left=find_index(number)
else:
result.append("R")
right=find_index(number)
return ("".join(result))
Author And Source
이 문제에 관하여([프로그래머스/파이썬] Level 1 키패드 누르기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bye9/프로그래머스파이썬-Level-1-키패드-누르기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)