https://school.programmers.co.kr/learn/courses/30/lessons/67256
풀이 - 나의 생각
번호별 좌표를 리스트에 저장하고
L, R에 해당하는 번호는 그냥 바로 저장하면 되고
2, 5, 8, 0 을 누를때는 거리를 비교해서 저장하면 됩니다.
더 간단하게 할 방법이 있을까 고민했는데
지금은 이게 그나마 나은 거 같습니다.
더 좋은 방법이 있다면 알려주시면 감사하겠습니다.
코드
def distance(direct, now):
return abs(direct[0] - now[0]) + abs(direct[1] - now[1])
def solution(numbers, hand):
answer = ''
pad = {
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),
11:(3,0), 0:(3,1), 12:(3,2),
}
L, R = 11, 12
for num in numbers:
if num in [1, 4, 7]:
answer += 'L'
L = num
elif num in [3, 6, 9]:
answer += 'R'
R = num
else:
#거리비교, 같으면 hand 따라서
distanceL = distance(pad[L], pad[num])
distanceR = distance(pad[R], pad[num])
if distanceL == distanceR:
if hand == "left":
answer += 'L'
L = num
else:
answer += 'R'
R = num
else:
if distanceL < distanceR:
answer += 'L'
L = num
else:
answer += 'R'
R = num
return answer
728x90
'프로그래머스 > Lv.1' 카테고리의 다른 글
다른 사람의 풀이 - Python, set, ascii_lowercase (0) | 2024.11.15 |
---|---|
대충 만든 자판 -Python, defaultdict, 구현 (1) | 2024.11.15 |
기사단원의 무기 - Python, 약수 찾기 (0) | 2024.11.14 |
공원 산책 - Python, 구현 (0) | 2024.11.14 |
체육복 - Python, set (0) | 2024.11.12 |