문제링크
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 get_distance(now, target):
w = [[1,2,3],[4,5,6],[7,8,9],['*',0,'#']]
l = [[1,4,7,'*'],[2,5,8,0],[3,6,9,'#']]
for i in range(len(w)):
if now in w[i]:
nw = i
if target in w[i]:
tw = i
for i in range(len(l)):
if now in l[i]:
nl = i
if target in l[i]:
tl = i
return abs(nw-tw) + abs(nl-tl)
def solution(numbers, hand):
answer = ''
left, right = '*', '#'
for n in numbers:
if n in [1,4,7]:
answer += 'L'
left = n
if n in [3,6,9]:
answer += 'R'
right = n
if n in [2,5,8,0]:
ld = get_distance(left, n)
rd = get_distance(right, n)
if ld < rd:
answer += 'L'
left = n
elif ld > rd:
answer += 'R'
right = n
elif hand == 'left':
answer += 'L'
left = n
else:
answer += 'R'
right = n
return answer
피드백
- 거리 구할 때 w, l 나눌 필요 없었음
- 풀이 방법 다양함
'코딩 문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 실패율 (python) (0) | 2022.05.09 |
---|---|
[프로그래머스] 크레인 인형뽑기 게임 (python) (0) | 2022.05.09 |
[프로그래머스] 숫자 문자열과 영단어 (python) (0) | 2022.05.06 |
[프로그래머스] 신규 아이디 추천 (python) (0) | 2022.05.06 |
[프로그래머스] 신고 결과 받기 (python) (0) | 2022.05.05 |