💫 문제 설명
매개변수
numbers: 순서대로 누를 번호가 담긴 배열- 크기 :
1 이상 1,000 이하 - 원소의 값 :
0 이상 9 이하인 정수
- 크기 :
hand: 왼손잡이인지 오른손잡이인 지를 나타내는 문자열left(왼손잡이)orright(오른손잡이)
- 왼손 사용 =
L, 오른손 사용 =R순서대로 이어 붙여 문자열 형태로 return
→ 각 번호를 누른 엄지손가락이 왼손인 지 오른손인 지를 나타내는 연속된 문자열 형태로 return 하도록 solution 함수를 완성
규칙
맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다.
- 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다.
- 왼쪽 열의 3개의 숫자
1,4,7을 입력할 때는 왼손 엄지손가락을 사용합니다. - 오른쪽 열의 3개의 숫자
3,6,9를 입력할 때는 오른손 엄지손가락을 사용합니다. - 가운데 열의 4개의 숫자
2,5,8,0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다.- 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다.
| numbers | hand | result |
|---|---|---|
| [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" |
입출력 예 #1
| 왼손 위치 | 오른손 위치 | 눌러야 할 숫자 | 사용한 손 | 설명 |
|---|---|---|---|---|
| * | # | 1 | L | 1은 왼손으로 누릅니다. |
| 1 | # | 3 | R | 3은 오른손으로 누릅니다. |
| 1 | 3 | 4 | L | 4는 왼손으로 누릅니다. |
| 4 | 3 | 5 | L | 왼손 거리는 1, 오른손 거리는 2이므로 왼손으로 5를 누릅니다. |
| 5 | 3 | 8 | L | 왼손 거리는 1, 오른손 거리는 3이므로 왼손으로 8을 누릅니다. |
| 8 | 3 | 2 | R | 왼손 거리는 2, 오른손 거리는 1이므로 오른손으로 2를 누릅니다. |
| 8 | 2 | 1 | L | 1은 왼손으로 누릅니다. |
| 1 | 2 | 4 | L | 4는 왼손으로 누릅니다. |
| 4 | 2 | 5 | R | 왼손 거리와 오른손 거리가 1로 같으므로, 오른손으로 5를 누릅니다. |
| 4 | 5 | 9 | R | 9는 오른손으로 누릅니다. |
| 4 | 9 | 5 | L | 왼손 거리는 1, 오른손 거리는 2이므로 왼손으로 5를 누릅니다. |
| 5 | 9 | – | – |
result : "LRLLLRLLRRL"
💫 코드
def solution(numbers, hand):
answer = ''
dic = {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 = dic['*']
right = dic['#']
for number in numbers:
now = dic[number]
if number in [1, 4, 7]:
answer+='L'
left = now
elif number in [3, 6, 9]:
answer+='R'
right = now
else:
left1 = 0
right1 = 0
for a, b, c in zip(left, right, now):
left1 += abs(a-c)
right1 += abs(b-c)
if left1 < right1:
answer+='L'
left = now
elif right1 < left1:
answer+='R'
right = now
else:
if hand == 'left':
answer+='L'
left = now
else:
answer+='R'
right = now
return answer


답글 남기기