본문 바로가기
Algorithm/구현

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

by HANNI하니 2023. 5. 22.

사용 언어 - Python3

문제 - 키패드 누르기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

정답

단순 구현 (정답 맞춘 여부 X)

딕셔너리 형태로 저장

def solution(numbers, hand):
    answer = ''
    dic = {1: [0, 0], 2: [0, 1], 3: [0, 2],
           4: [1, 0], 5: [1, 1], 6: [1, 2],
           7: [2, 0], 8: [2, 1], 9: [2, 2],
           '*':[3, 0], 0: [3, 1], '#': [3, 2]}

    left_s = dic['*']
    right_s = dic['#']
    
    for i in numbers:
        now = dic[i]
        if i in [1, 4, 7]:
            answer += 'L'
            left_s = now
            
        elif i in [3, 6, 9]:
            answer += 'R'
            right_s = now

        else:
            left_d = 0
            right_d = 0
            
            for a, b, c in zip(left_s, right_s, now):
                left_d += abs(a-c)
                right_d += abs(b-c)
            
            if left_d < right_d:
                answer += 'L'
                left_s = now

            elif left_d > right_d:
                answer += 'R'
                right_s = now
            
            else:
                if hand == 'left':
                    answer += 'L'
                    left_s = now
                else:
                    answer += 'R'
                    right_s = now
            
    return answer

 

 

 

레퍼런스

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글