프로그래머스 코딩테스트 고득점 Kit의 문제입니다.
https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
문제
https://programmers.co.kr/learn/courses/30/lessons/67256
코딩테스트 연습 - 키패드 누르기
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"
programmers.co.kr
내가 작성한 코드
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 |