◈ 오류 정정 및 피드백 환영
코딩테스트 연습 - 키패드 누르기
[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
🔎문제 분석
키패드 버튼을 좌표로 구현하면 된다. 0번을 원점으로 두도록 하면 다음과 같다.
def get_coord(number):
if number != 0:
x = (number+2)%3-1
y = 3-(number-1)//3
else:
x = 0
y = 0
return x, y
🤦♀️유의 사항
좌표 사이의 거리를 계산할 때 일반적인 유클리디안 거리로 계산해서는 안 된다.
def get_coord(number):
if number != 0:
x = (number+2)%3-1
y = 3-(number-1)//3
else:
x = 0
y = 0
return x, y
def get_dist(x1, y1, x2, y2):
dist = (abs(x1-x2) + abs(y1-y2))
return dist
def solution(numbers, hand):
L_x, L_y = -1, 0
R_x, R_y = 1, 0
answer = ''
for i in numbers:
x, y = get_coord(i)
if i in [1,4,7]:
answer += "L"
L_x, L_y = x, y
elif i in [3,6,9]:
answer += "R"
R_x, R_y = x, y
else:
L_dist = get_dist(x, y, L_x, L_y)
R_dist = get_dist(x, y, R_x, R_y)
dif = L_dist - R_dist
if (dif<0)|(dif==0 and hand=="left"):
answer += "L"
L_x, L_y = x, y
elif (dif>0)|(dif==0 and hand=="right"):
answer += "R"
R_x, R_y = x, y
return answer
'Algorithm > Python' 카테고리의 다른 글
[Python] 프로그래머스 - [3차] 방금그곡 (0) | 2022.03.12 |
---|---|
[Python] 프로그래머스 - [1차] 프렌즈4블록 (0) | 2022.03.11 |
[Python] 프로그래머스 - 크레인 인형뽑기 게임 (0) | 2022.03.09 |
[Python] 프로그래머스 - 실패율 (0) | 2022.03.08 |
[Python] 프로그래머스 - [1차] 비밀지도(재귀) (0) | 2022.03.06 |
댓글