프로그래머스 문제 : 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
안녕하세요 ◠‿◠ 고고입니다.
오늘은 프로그래머스에 있는 2020 카카오 인턴십 키패드 누르기를 풀어보았습니다.
1에서 4까지의 거리는 1입니다. 4 / 3 = 1 입니다.
1에서 5까지의 거리는 2입니다. 4 / 3 + 4 % 3 = 1 + 1 = 2 입니다.
3으로 나눈 몫과 나머지를 더하면 거리를 구할 수 있습니다.
def solution(numbers, hand):
answer = ''
left = 10
right = 12
for number in numbers:
if number in [1,4,7]:
left = number
answer += 'L'
elif number in [3, 6, 9]:
right = number
answer += 'R'
else:
if number == 0:
number = 11
# a부터 b까지의 거리 = abs(a - b) / 3 + abs(a - b) % 3
Ldiff = int(abs(left - number) / 3) + abs(left - number) % 3
Rdiff = int(abs(right - number) / 3) + abs(right - number) % 3
if Ldiff < Rdiff:
left = number
answer += 'L'
elif Ldiff > Rdiff:
right = number
answer += 'R'
else:
if hand == 'left':
left = number
answer += 'L'
else:
right = number
answer += 'R'
return answer
print(solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], "right")) # "LRLLLRLLRRL"
print(solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2], "left")) # "LRLLRRLLLRR"
print(solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], "right")) # "LLRLLRLLRL"
'알고리즘' 카테고리의 다른 글
[Swift] find Two Missing Numbers (0) | 2022.01.11 |
---|---|
[Swift] 프로그래머스 - 하노이의 탑 (0) | 2022.01.10 |
[Swift] 2차원 배열 90도 회전 코드 (0) | 2021.11.18 |
[Swift] 프로그래머스 – 내적 (0) | 2021.11.04 |
[Swift] 프로그래머스 - 키패드 누르기 (0) | 2021.11.03 |
댓글