고딩왕 코범석
[프로그래머스] 키패드 누르기, Python3 본문
반응형
이번 포스팅에서는 2020 카카오 인턴십 코딩테스트 문제 중 첫 번째 문제인 키패드 누르기 문제에 대해 풀이를 해볼 것이다.
- 나의 풀이 방법
- 키패드를 딕셔너리로 표현했다.
- 문제에서 1,4,7 은 왼손, 3,6,9는 오른손으로 눌러야하기 때문에 left, right 라는 배열을 만들어서 저장해두었다.
- 2,5,8,0을 누를 때 마다 왼손, 오른손의 거리를 비교해야 한다. 이 때를 위해 현재 왼쪽, 오른쪽의 위치를 저장해두는 변수를 설정했다. (초기값 왼쪽 : *, 오른쪽 : #)
- 현재 손가락의 위치에서 누를 번호까지의 거리를 계산하는 메서드를 따로 작성했다.
- 거리가 같다면 hand 변수에 써있는 값을 통해 왼손으로 누를지, 오른손으로 누를지 결정한다.
def get_distance(now, destination):
return abs(now[0] - destination[0]) + abs(now[1] - destination[1])
def solution(numbers, hand):
answer = ''
number_directions = {
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_no = [1, 4, 7]
right_no = [3, 6, 9]
left, right = '*', '#'
for i in numbers:
if i in left_no:
answer += 'L'
left = i
elif i in right_no:
answer += 'R'
right = i
else:
left_distance = get_distance(number_directions[left], number_directions[i])
right_distance = get_distance(number_directions[right], number_directions[i])
if left_distance > right_distance:
answer += 'R'
right = i
elif left_distance < right_distance:
answer += 'L'
left = i
else:
if hand == "left":
answer += 'L'
left = i
else:
answer += 'R'
right = i
return answer
기모찌한 파란글씨
문제는 여기에서 풀어보길 바랍니다! 그럼 20,000!
반응형
'Computer Science > Algorithm' 카테고리의 다른 글
[프로그래머스] 동굴 탐험, Python3 (0) | 2021.01.22 |
---|---|
[프로그래머스] 매칭 점수, Python3 (0) | 2021.01.20 |
[프로그래머스] 징검다리 건너기, Python3 (0) | 2021.01.19 |
[프로그래머스] 보석 쇼핑, Python3 (0) | 2021.01.18 |
[프로그래머스] 수식 최대화, Python3 (0) | 2021.01.06 |