풀이
키패드의 숫자와 각 숫자에 맞는 좌표를 미리 딕셔너리에 선언해두고 풀었다.
나머지는 단순 구현이었다.
if문을 사용해 조건만 잘 걸어주면 어렵지 않게 풀 수 있는 문제였다.
코드
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),
'*':(3,0), '0':(3,1), '#':(3,2)}
left = keypad['*']
right = keypad['#']
for number in numbers:
if number == 1 or number == 4 or number == 7:
answer += 'L'
left = keypad[str(number)]
elif number == 3 or number == 6 or number == 9:
answer += 'R'
right = keypad[str(number)]
else:
leftDistance = abs(left[0]-keypad[str(number)][0])+abs(left[1]-keypad[str(number)][1])
rightDistance = abs(right[0]-keypad[str(number)][0])+abs(right[1]-keypad[str(number)][1])
if leftDistance < rightDistance:
answer += 'L'
left = keypad[str(number)]
elif leftDistance > rightDistance:
answer += 'R'
right = keypad[str(number)]
else:
if hand == "right":
answer += 'R'
right = keypad[str(number)]
else:
answer += 'L'
left = keypad[str(number)]
return answer
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 42890 파이썬 - 후보키 (0) | 2024.09.09 |
---|---|
[프로그래머스] 12978 파이썬 - 배달 (0) | 2024.09.09 |
[프로그래머스] 1844 C# - 게임 맵 최단거리 (0) | 2024.08.16 |
[프로그래머스] 178870 파이썬 - 연속된 부분 수열의 합 (투포인터 알고리즘) (0) | 2024.04.12 |
[프로그래머스] 92334 파이썬 - 신고 결과 받기 (0) | 2024.04.11 |