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 search(key_pad, now_num):
for i in range(len(key_pad)):
for j in range(len(key_pad[i])):
if now_num == key_pad[i][j]:
a= [i,j]
return a
def solution(numbers, hand):
answer = ''
key_pad = [[1,2,3],
[4,5,6],
[7,8,9],
["*",0,"#"]]
l_now = key_pad[3][0]
r_now = key_pad[3][2]
for i in numbers:
a = search(key_pad, l_now)
b = search(key_pad, r_now)
c = search(key_pad,i)
if i == 1 or i == 4 or i == 7:
answer += "L"
l_now = key_pad[c[0]][c[1]]
elif i == 3 or i == 6 or i == 9:
answer += "R"
r_now = key_pad[c[0]][c[1]]
elif i == 2 or i == 5 or i == 8 or i == 0:
l_length = abs(c[0]-a[0]) + abs(c[1]-a[1])
r_length = abs(b[0]-c[0]) + abs(b[1]-c[1])
if l_length == r_length and hand == "right":
answer += "R"
r_now = key_pad[c[0]][c[1]]
elif l_length == r_length and hand == "left":
answer += "L"
l_now = key_pad[c[0]][c[1]]
elif l_length > r_length:
answer += "R"
r_now = key_pad[c[0]][c[1]]
elif l_length < r_length:
answer += "L"
l_now = key_pad[c[0]][c[1]]
return answer
문제가 어렵지는 않았다.
문제를 잘 읽자
반응형
'코딩 > 프로그래머스 lv1' 카테고리의 다른 글
프로그래머스 - 실패율 [파이썬] (0) | 2021.10.28 |
---|---|
[프로그래머스] 입국심사 - 파이썬 (0) | 2021.08.19 |
완주하지 못한 선수 (0) | 2021.04.10 |
예산 - 파이썬 (그리디) (0) | 2021.04.10 |
3진법 뒤집기 (0) | 2021.04.10 |