728x90
반응형
프로그래머스 연습문제
안녕하세요 :)
오늘 가지고 온 문제는 카카오 인턴십 문제입니다.
카카오 문제 치고 굉장히 쉬운 편에 속하는데요, 저는 좀 지저분하게 풀었습니다
문제 링크
문제에 나온 조건에만 맞추면 되는 쉬운 문제였습니다 ㅎㅎ 아래에 바로 코드 올려요!
from collections import deque
def checkLeft(num):
possible = ['1', '4', '7', '2', '5', '8', '0']
if num in possible:
return True
return False
def checkRight(num):
possible = ['2', '5', '8', '0', '3', '6', '9']
if num in possible:
return True
return False
def solution(numbers, hand):
answer = ''
numbers = deque(numbers)
pads = {'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 = pads['*']
right = pads['#']
for num in numbers:
num = str(num)
if checkLeft(num) and not checkRight(num):
answer += 'L'
left = pads[num]
elif not checkLeft(num) and checkRight(num):
answer += 'R'
right = pads[num]
elif checkLeft(num) and checkRight(num):
leftDist = abs(pads[num][0] - left[0]) + abs(pads[num][1] - left[1])
rightDist = abs(pads[num][0] - right[0]) + abs(pads[num][1] - right[1])
if leftDist < rightDist:
answer += 'L'
left = pads[num]
elif rightDist < leftDist:
answer += 'R'
right = pads[num]
elif rightDist == leftDist:
if hand == 'right':
answer += 'R'
right = pads[num]
if hand == 'left':
answer += 'L'
left = pads[num]
return answer
좀 지저분하긴 하네요..
그럼 이만 ㅎㅎ
728x90
반응형
'코딩해 > 코테준비' 카테고리의 다른 글
[프로그래머스] C++ 연습문제 최댓값과 최솟값 (0) | 2020.11.06 |
---|---|
[라인플러스] 2019 상반기 인턴 코딩테스트 문제(Python) (0) | 2020.10.13 |
[프로그래머스] Python 두 개 뽑아서 더하기 (월간 코드 첼린지) (0) | 2020.10.03 |
[프로그래머스 Python] 올바른 괄호 (연습문제) (0) | 2020.10.03 |
[프로그래머스] Python 스킬트리(level 2) (0) | 2020.10.02 |