본문 바로가기

PS/프로그래머스

[프로그래머스 LV 1 ] 키패드 누르기 (파이썬/python)

728x90

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

 

프로그래머스에 직접 코드 쓰는걸 적응하기 위해 풀어본 심심풀이문제

그냥 딕셔너리에 좌표넣고 거리 계산해가면서 풀었다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def solution(numbers, hand):
    answer = ''
    dic = {1: [00], 2: [01], 3: [02], 4: [10], 5: [11], 6: [12], 7: [20], 8: [21], 9: [22], 0: [31]}
 
    left = [30]
    right = [32]
 
    for n in numbers:
        if n == 1 or n == 4 or n == 7:
            answer += "L"
            left = dic[n]
        elif n == 3 or n == 6 or n == 9:
            answer += "R"
            right = dic[n]
 
        # 2,5,8,0일때
        else:
            x, y = dic[n]
            right_distance = abs(right[0- x) + abs(right[1- y)
            left_distance = abs(left[0- x) + abs(left[1- y)
            if left_distance == right_distance:
                if hand == "right":
                    answer += "R"
                    right = dic[n]
                else:
                    answer += "L"
                    left = dic[n]
            # 서로 위치가 다를경우
            else:
                if right_distance > left_distance:
                    answer += "L"
                    left = dic[n]
                else:
                    answer += "R"
                    right = dic[n]
 
    return answer
cs
728x90