프로그래머스 코딩테스트 고득점 Kit의 문제입니다.
https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
문제
https://programmers.co.kr/learn/courses/30/lessons/67256
내가 작성한 코드
def click(hand, keypad, number, left, right):
distance_left = sum(abs(a-b) for a, b in zip(left, keypad[number]))
distance_right = sum(abs(a-b) for a, b in zip(right, keypad[number]))
if distance_left < distance_right or (distance_left == distance_right and hand == "left"):
return "L", keypad[number], right
else:
return "R", left, keypad[number]
def solution(numbers, hand):
answer = []
keypad = [(3, 1), (0, 0), (0 ,1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (2, 3)]
left = (3, 0)
right = (3, 2)
for num in numbers:
# left
if num in [1, 4, 7]:
answer.append("L")
left = keypad[num]
#right
elif num in [3, 6, 9]:
answer.append("R")
right = keypad[num]
# left or right
else:
res, left, right = click(hand, keypad, num, left, right)
answer.append(res)
return ''.join(answer)
- 좌표
- 키패드를 인덱스로 상응하는 좌표 배열 저장
- 2,5,8,0일 경우 멘하탄 거리 + hand로 손 결정
다른 사람이 작성한 코드
None
기억해야할 것
- 간단한 문제였다!
'코딩테스트' 카테고리의 다른 글
[프로그래머스][KAKAO_인턴][2020] 보석 쇼핑 (0) | 2021.09.08 |
---|---|
[프로그래머스][KAKAO_인턴][2020] 수식 최대화 (0) | 2021.09.06 |
[프로그래머스][KAKAO_인턴][2021] 시험장 나누기 (0) | 2021.09.05 |
[프로그래머스][KAKAO_인턴][2021] 미로 탈출 (0) | 2021.09.05 |
[프로그래머스][KAKAO_인턴][2021] 표 편집 (0) | 2021.09.05 |