[Programmers] P67256 키패드 누르기
[Programmers] P67256 키패드 누르기
Question
Language: Python
Solution
이번 문제는 implementation 문제로, 주어진 조건에 따라 처리를 하면된다.
- 각각의 키패드에 대한 위치 정보 할당
- 키패드에 따라 왼손/오른손 여부 선택
- [1,4,7]은 왼손이 처리
- [3,6,9]는 오른손이 처리
- [2,5,8,0]은 왼손/오른손의 위치에 따라 거리가 가까운 손이 처리
- 만약 왼손과 오른손으로부터의 거리가 모두 같은 경우 왼손/오른손잡이의 여부를 통해 결정
- 키패드를 누르게 되면 왼손/오른손의 위치 정보를 갱신해야한다.
def solution(numbers, hand):
answer = ''
locations={}
index=1
#각 번호에 대해 위치 좌표를 설정
for i in range(3):
for j in range(3):
locations[index]=(i,j)
index+=1
locations[0]=(3,1)
#왼손,오른손의 초기 위치 설정
left_index=(3,0)
right_index=(3,2)
result=""
for number in numbers:
#누를 번호에 대한 위치 정보
location=locations[number]
#왼손이 누르는 경우
if number in [1,4,7]:
result+="L"
left_index=location
#오른손이 누르는 경우
elif number in [3,6,9]:
result+="R"
right_index=location
else:
#왼손,오른손으로부터의 거리 비교해서 짧은 쪽이 해당 번호를 누르게 된다. 만약 같으면 왼손잡이/오른손잡이 여부 판단
left_distance=abs(location[0]-left_index[0])+abs(location[1]-left_index[1])
right_distance=abs(location[0]-right_index[0])+abs(location[1]-right_index[1])
#왼손
if left_distance < right_distance:
result+="L"
left_index=location
#오른손
elif left_distance> right_distance:
result+="R"
right_index=location
#거리가 같은 경우 -> 왼손/오른손잡이에 따라 달라진다.
else:
if hand=="left":
result+="L"
left_index=location
else:
result+="R"
right_index=location
answer=result
return answer
댓글남기기