💡코딩테스트/프로그래머스
[프로그래머스 | 2020 카카오 인턴십] 키패드 누르기
두_두
2023. 2. 7. 10:43
📑 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝 풀이
def cal_dist(a,b):
return abs(a[0]- b[0]) + abs(a[1]-b[1])
def solution(numbers, hand):
arr = []
for i in range(4):
for j in range(3):
arr.append((i,j))
key = [1,2,3,4,5,6,7,8,9,'*',0,'#']
keypad = {key:value for key, value in zip(key, arr)}
answer = ''
left, right = '*', '#'
for number in numbers:
if number in [1,4,7]:
answer += 'L'
left = number
elif number in [3,6,9]:
answer += 'R'
right = number
else:
if cal_dist(keypad[left],keypad[number]) < cal_dist(keypad[right], keypad[number]):
answer += 'L'
left = number
elif cal_dist(keypad[left],keypad[number]) == cal_dist(keypad[right], keypad[number]):
if hand == 'left':
answer += 'L'
left = number
else:
answer += 'R'
right = number
else:
answer += 'R'
right = number
return answer
💕 Key Point
zip을 이용하여 크기가 같은 배열 두개를 하나의 dict 딕셔너리로 묶어서 사용할 수 있다.
keypad = {key:value for key, value in zip(key, arr)}
728x90