[프로그래머스] 키패드 누르기, 파이썬
💡 문제 해결 아이디어
내가 생각한 아이디어
- 각 키패드의 번호의 좌표와 왼손, 오른손의 좌표를 가로(행) 4 세로(열) 3의 2차원 배열로 표현
- 0을 제외한 좌표의 계산은 1을 빼고 3으로 나눈 (몫, 나머지)로 설정한다
- 0의 좌표는 [3, 1]
- 초기 시작 왼손과 오른손의 좌표는 [3,0], [3,2]
- 왼손을 쓰는 경우
1. 1,4,7을 누를 때 (좌표의 두번째 값이 0일 때)
2. 2,5,8을 누르는데, 해당 좌표와의 거리가 오른손보다 가까울 떄
3. 2,5,8을 누르는데, 해당 좌표와의 거리가 같고 왼손잡이일 때
- 그 외에는 오른손을 쓴다.
💻 작성된 코드(수정)
def solution(numbers, hand):
answer = ''
lhand, rhand = [3,0], [3,2]
for num in numbers:
if num == 0:
coord = [3,1]
else:
coord = ((num-1)//3, (num-1)%3)
ldist = abs(lhand[0]-coord[0]) + abs(lhand[1]-coord[1])
rdist = abs(rhand[0]-coord[0]) + abs(rhand[1]-coord[1])
if coord[1] == 0 or \
coord[1] == 1 and (ldist < rdist or (ldist == rdist and hand == "left" )):
lhand = coord
answer = answer + "L"
else :
rhand = coord
answer = answer + "R"
return answer