Algorithm/1일 1코테
[😍 프로그래머스-카카오인턴] 키패드 누르기
대인보우
2021. 7. 22. 14:33
반응형
https://programmers.co.kr/learn/courses/30/lessons/67256
코딩테스트 연습 - 키패드 누르기
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"
programmers.co.kr

내가 쓴 풀이
def solution(numbers, hand):
keypad = [[1,2,3], [4,5,6], [7,8,9],['*',0,'#']]
answer = ''
L = '30'
R = '32'
for number in numbers:
for x in range(len(keypad)): # x 좌표
for y in range(len(keypad[0])): # y 좌표
if keypad[x][y] == number: # 숫자랑 좌표가 같으면
if number in [1,4,7]: # 1,4,7일 경우 왼손
L = str(x)+str(y) # 왼손에 저장
answer += 'L' # 답안에 추가
break
elif number in [3,6,9]:# 3,6,9일 경우 오른손
R = str(x)+str(y)
answer += 'R'
else:
distance_l = abs(int(L[0])-x) + abs(int(L[1])-y) # 거리 구하기
distance_r = abs(int(R[0])-x) + abs(int(R[1])-y) # 거리 구하기
if distance_l > distance_r:
R = str(x)+str(y)
answer += 'R'
elif distance_l < distance_r:
L = str(x)+str(y)
answer += 'L'
else: # 거리가 같으면 손잡이로 판단
if hand == 'right':
R = str(x)+str(y)
answer += 'R'
else:
L = str(x)+str(y)
answer += 'L'
return answer
반응형