728x90
https://programmers.co.kr/learn/courses/30/lessons/67256#qna
코딩테스트 연습 - 키패드 누르기
[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
import math
def solution(numbers, hand):
answer = ''
num = {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], 0:[3,1], -1:[3,0], -2:[3,2]}
l_num = [1,4,7]
r_num = [3,6,9]
l = -1
r = -1
for i in numbers:
if i in l_num:
answer += "L"
l = i
elif i in r_num:
answer += "R"
r = i
else:
if abs(num[l][0]-num[i][0]) + abs(num[l][1]-num[i][1]) < abs(num[r][0]-num[i][0]) + abs(num[r][1]-num[i][1]):
answer += "L"
l = i
elif abs(num[l][0]-num[i][0]) + abs(num[l][1]-num[i][1]) > abs(num[r][0]-num[i][0]) + abs(num[r][1]-num[i][1]):
answer += "R"
r = i
else:
if hand == "right":
answer += "R"
r = i
else:
answer += "L"
l = i
return answer
상하좌우만 가능, 대각선 불가능 => 거리 구하기 공식으로 했다가 실패함
상하, 좌우 거리 따로 구해서 비교
반응형
'전.py' 카테고리의 다른 글
[python] 백준 1141 접두사 (0) | 2022.01.11 |
---|---|
[python] 프로그래머스 없는 숫자 더하기 (Lv.1) (0) | 2022.01.10 |
[python] 프로그래머스 숫자 문자열과 영단어 (Lv.1) (0) | 2022.01.09 |
[python] 프로그래머스 오픈채팅방 (Lv.2) (0) | 2022.01.09 |
[python] 프로그래머스 로또의 최고 순위와 최저 순위 (Lv.1) (0) | 2022.01.07 |