배고픈 개발자 이야기
[카카오 인턴] 키패드 누르기 본문
728x90
왼손 엄지와 오른손 엄지로 입력된 번호를 어떻게 누르는지 문자열로 반환하는 문제이다.
각 키패드별로 좌표를 생성하고, 초기값을 선언한다.
그리고 규칙에 맞게 왼쪽 버튼은 왼손, 오른손 버튼일때는 오른손으로 입력을 하며
가운데 번호일때만 거리를 구하여 어떤손으로 누를지 정한다, 거리가 같으면 어느손잡이냐에 따라 정하면 끝이다.
def distance(coord_1, coord_2):
return abs(coord_1[0]-coord_2[0]) + abs(coord_1[1]-coord_2[1])
def solution(numbers, hand):
answer = ''
num_coord = {
'1' : [0, 3], '2' : [1, 3], '3' : [2, 3],
'4' : [0, 2], '5' : [1, 2], '6' : [2, 2],
'7' : [0, 1], '8' : [1, 1], '9' : [2, 1],
'*' : [0, 0], '0' : [1, 0], '#' : [2, 0]
}
left_pos, right_pos = '*', "#"
for num in numbers:
if num in [1, 4, 7]:
answer += 'L'
left_pos = str(num)
elif num in [3, 6, 9]:
answer += 'R'
right_pos = str(num)
else:
left_dis = distance(num_coord[left_pos], num_coord[str(num)])
right_dis = distance(num_coord[right_pos], num_coord[str(num)])
if left_dis < right_dis:
answer += 'L'
left_pos = str(num)
elif left_dis > right_dis:
answer += 'R'
right_pos = str(num)
else:
if hand == 'left':
answer += 'L'
left_pos = str(num)
else:
answer += 'R'
right_pos = str(num)
return answer
'알고리즘 문제 > PROGRAMMERS' 카테고리의 다른 글
[2019 kakao blind] 실패율 (0) | 2021.07.31 |
---|---|
[Summer/Winter Coding] 소수 구하기 (0) | 2021.07.31 |
[2019 카카오 인턴십] 징검다리 건너기 (feat. PYTHON) (0) | 2020.05.08 |
[2019 카카오 인턴십] 호텔 방 배정 (feat. PYTHON) (0) | 2020.05.08 |
[2019 카카오 인턴십] 불량 사용자 (feat. PYTHON) (0) | 2020.05.08 |
Comments