반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/67256
문제 풀이
문제 조건대로 구현함.
거리를 측정하는 함수는 각 키패드에 대해 위치를 기록해두고, |x1-x2| + |y1-y2|를 계산함.
코드
def distance(num, l_status, r_status, hand):
location = {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]}
dis_l = abs(location[num][0] - location[l_status][0]) + abs(location[num][1] - location[l_status][1])
dis_r = abs(location[num][0] - location[r_status][0]) + abs(location[num][1] - location[r_status][1])
if dis_l > dis_r or (dis_l == dis_r and hand[0] == 'r'):
return 'R', l_status, num
elif dis_l < dis_r or (dis_l == dis_r and hand[0] == 'l'):
return 'L', num, r_status
def solution(numbers, hand):
l_status, r_status = '*', '#'
res = ''
for num in numbers:
if num in [1, 4, 7]:
l_status = num
res += 'L'
elif num in [3, 6, 9]:
r_status = num
res += 'R'
else:
hand_type, l_status, r_status = distance(num, l_status, r_status, hand)
res += hand_type
return res
반응형
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스] lv.1 크레인 인형 뽑기 게임 풀이 (0) | 2023.10.27 |
---|---|
[프로그래머스] lv.1 개인정보 수집 유효기간 python 풀이 (0) | 2023.10.27 |
[프로그래머스] lv.1 문자열을 정수로 바꾸기 python 풀이 (0) | 2023.10.26 |
[프로그래머스] 둘만의 암호 풀이 (0) | 2023.10.26 |
[프로그래머스] lv.1 신고 결과 받기 python 풀이 (0) | 2023.10.26 |