알고리즘/programmers
[ 프로그래머스 / 파이썬 ] 키패드 누르기
jungeun960
2021. 5. 4. 15:15
프로그래머스 2020 카카오 인턴십
- Point. 키패드의 좌표를 딕셔너리에 저장해 거리를 구할 수 있도록 한다.
- 왼손(*)과 오른손(#) 초기값 설정
- 숫자 1,4,7 의 경우, 왼손 & 왼손 위치 저장
- 숫자 3,6,9 의 경우, 오른손 & 오른손 위치 저장
- 숫자 2,5,8,0 의 경우
- 현재 위치와 왼손, 오른손간의 거리 구하기
- 오른손이 가까우면 오른손 & 오른손 위치 저장
- 왼손이 가까우면 왼손 & 왼손 위치 저장
- 위치가 같으면 hand에서 왼손잡이와 오른손잡이를 확인해
- 왼손잡이면 왼손 & 왼손 위치 저장
- 오른손잡이면 오른손 & 오른손 위치 저장
def solution(numbers, hand):
answer = ''
l_x,l_y = (3,0)
r_x,r_y = (3,2)
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),
0 : (3,1)}
for i in numbers:
if i in [1,4,7]:
answer+="L"
l_x,l_y = dic[i]
elif i in [3,6,9]:
answer +="R"
r_x,r_y = dic[i]
else:
c_x,c_y = dic[i]
l = abs(c_x - l_x) + abs(c_y - l_y)
r = abs(c_x - r_x) + abs(c_y - r_y)
if l>r:
answer += "R"
r_x,r_y = c_x,c_y
elif l<r:
answer += "L"
l_x,l_y = c_x,c_y
else:
if hand == "right":
answer += "R"
r_x,r_y = c_x,c_y
else:
answer += "L"
l_x,l_y = c_x,c_y
return answer
반응형