[프로그래머스] Level1, 키패드 누르기 (Python)

2021. 6. 17. 18:02·알고리즘/프로그래머스
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/67256?language=python3 

 

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

[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 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

번호가 1,4,7인 경우에는 왼쪽으로 3,6,9인 경우에는 오른쪽으로 누른다.

2,5,8,0일 경우에는 가까운 손가락으로 누르면 되는데

거리를 구해야 하기 때문에 딕셔너리로 좌표값도 같이 선언해준다.

 

거리를 구할 때 x,y 좌표를 각각 빼준다음에 절댓값을 씌워주면 된다.

만약 왼쪽 오른쪽 거리가 같을 경우에는 hand에 들어온 값으로 결정해주면 된다.

반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Level1, 1차 비밀지도 (Python)  (0) 2021.06.18
[프로그래머스] Level1, 실패율 (Python)  (0) 2021.06.17
[프로그래머스] Level2, 3차 압축 (Python)  (0) 2021.06.16
[프로그래머스] Level2, 3차 파일명 정렬 (Python)  (0) 2021.06.16
[프로그래머스] Level2, 캐시 (Python)  (0) 2021.06.14
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] Level1, 1차 비밀지도 (Python)
  • [프로그래머스] Level1, 실패율 (Python)
  • [프로그래머스] Level2, 3차 압축 (Python)
  • [프로그래머스] Level2, 3차 파일명 정렬 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해99
    회고
    SpringBoot
    카카오코딩테스트
    알고리즘
    spring
    코딩테스트
    orm
    후기
    미니프로젝트
    백준
    버그
    SFlash
    파이썬
    김영한
    java
    에러
    인프런
    해결
    괄호
    정리
    스파르타코딩클럽
    항해마켓
    jpa
    브루트포스
    프로그래머스
    그리디
    실전프로젝트
    카카오인턴
    조합
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[프로그래머스] Level1, 키패드 누르기 (Python)
상단으로

티스토리툴바