https://school.programmers.co.kr/learn/courses/30/lessons/67256
소스코드
def solution(numbers, hand):
answer = ''
def distance(a,b):
x = abs((a+2) % 3 - (b+2) % 3)
y = abs((a-1)//3 - (b-1) //3)
return x +y
left = [1,4,7]
right = [3,6,9]
l,r = 10,12
for num in numbers :
if num == 0:
num = 11
if num in left:
l = num
answer += 'L'
elif num in right :
r = num
answer += 'R'
else :
if distance(num,r) >distance(num,l):
l = num
answer += 'L'
elif distance(num,r) < distance(num,l):
r = num
answer += 'R'
else :
if hand == 'right':
r = num
answer += 'R'
elif hand =='left':
l = num
answer += 'L'
return answer
풀이
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
* | 0 | # |
키패드가 위와 같이 생겼는데
1. 두 점 거리 계산하기
def distance(a,b):
x = abs((a+2) % 3 - (b+2) % 3)
y = abs((a-1)//3 - (b-1) //3)
return x +y
이런 함수를 사용해서 두 숫자간의 거리를 알 수 있는 함수를 만들었다.
3을 3으로 나눈 몫은 0이므로 2를 더해줬다.
그렇게 되면 1,2,3 -> 0,1,2 이렇게 된다.
2. 변수
l, r이라는 변수에 각각 가장 최근에 눌렀던 숫자를 넣었다. 여기서 조심할 점은
*,0,#이 부분은 각각 10,11,12로 치환해서 풀었다.
그렇게 값을 넣어서 제출하면 완료 ~
'Coding test' 카테고리의 다른 글
[프로그래머스/Lv.1/파이썬] 비밀지도 (0) | 2024.03.08 |
---|---|
[프로그래머스/Lv.1/파이썬] 다트게임 (0) | 2024.03.08 |
[프로그래머스/Lv.1/파이썬] 성격 유형 검사하기 (0) | 2024.03.07 |
[백준/9465/파이썬] 스티커 - DP (0) | 2024.02.08 |
[백준/1543/파이썬] 문서 검색 - Greedy (0) | 2024.02.05 |