반응형
https://school.programmers.co.kr/learn/courses/30/lessons/67256
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
맨해튼 거리법을 사용하는게 핵심이다.
def solution(numbers, hand):
answer = []
keypad = {
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),
0: (3, 1)
}
left_hand = (3, 0) # '*'의 위치
right_hand = (3, 2) # '#'의 위치
for num in numbers:
if num in [1, 4, 7]:
answer.append('L')
left_hand = keypad[num]
elif num in [3, 6, 9]:
answer.append('R')
right_hand = keypad[num]
else:
# 맨해튼 거리 계산
left_distance = abs(left_hand[0] - keypad[num][0]) + abs(left_hand[1] - keypad[num][1])
right_distance = abs(right_hand[0] - keypad[num][0]) + abs(right_hand[1] - keypad[num][1])
if left_distance < right_distance or (left_distance == right_distance and hand == "left"):
answer.append('L')
left_hand = keypad[num]
else:
answer.append('R')
right_hand = keypad[num]
return "".join(answer)
'프로그래머스 > lv.1' 카테고리의 다른 글
둘만의 암호 (0) | 2024.01.29 |
---|---|
신규 아이디 추천 (0) | 2024.01.28 |
햄버거 만들기 (0) | 2024.01.28 |
크레인 인형뽑기 게임 (0) | 2024.01.27 |
[PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2024.01.27 |