IT보안관의 공부 클라우드

[프로그래머스 Level1]키패드 누르기 본문

코딩 테스트/프로그래머스

[프로그래머스 Level1]키패드 누르기

ㅡㅡㅡㅡㄷ 2022. 6. 28. 19:16

코딩테스트 연습 - 키패드 누르기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 키패드 누르기

[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

keypad = ["123",  # 0
          "456",  # 1
          "789",  # 2
          "*0#"  # 3
          ]
check_list = [[0,1],[1,0],[0,-1],[-1,0]]

def solution(numbers, hand):
    answer = ''
    # 현재 손가락 위치
    left_ = [3, 0]
    right_ = [3, 2]

    # left right 간단하게 비교
    left = '147'
    right = '369'

    for num in numbers:
        # 현재 idx 위치
        j = -1
        num = str(num)
        idx=[0,0]
        for key in keypad:
            j += 1
            if key.find(num) != -1:
                # idx에 현재 num위치 저장 이걸로 left right 비교
                idx = [j, key.find(num)]
                break
        # print('###########num:', num)
        # 2 왼쪽 3개의 숫자면 왼손 사용, 오른쪽 3개의 숫자면 오른손 사용
        if num in left:
            answer += 'L'
            left_ = idx
            # print(left_)
        elif num in right:
            answer += 'R'
            right_ = idx
            # print(right_)
        else:
            
            # left 먼저
            left1 = left_[0] - idx[0]
            left2 = left_[1] - idx[1]
            left_idx=[left1,left2]
            # print("left_idx:",left_idx)
            if left_idx in check_list:
                left0=1
            else:
                left0=abs(left1)+abs(left2)
            # right 먼저
            right1 = right_[0] - idx[0]
            right2 = right_[1] - idx[1]
            right_idx=[right1,right2]
            # print("right_idx:",right_idx)
            if right_idx in check_list:
                right0=1
            else:
                right0=abs(right1)+abs(right2)
                
            
            # print(left_, right_, idx, left0, right0)
            if left0 < right0:
                answer += 'L'
                left_=idx
            elif right0 < left0:
                answer += 'R'
                right_=idx
            else:
                if hand[0]=='r':
                    right_=idx
                    answer+='R'
                else:
                    left_=idx
                    answer+='L'
            print(left_, right_, idx)
        # print("answer:::", answer)
    return answer
    # print(keypad[0][0],keypad[1][0],keypad[2][0])

 

Comments