728x90
문법 몰랐던 내용
절대값 구하는 방법
abs(i)





내 문제 풀이
def solution(numbers, hand):
leftSpot = 0 #왼 엄지 위치
rightSpot = 0 #오른 엄지 위치
answer = ''
for i in range(len(numbers)) :
if (numbers[i] == 1 or numbers[i] == 4 or numbers[i] == 7) :
leftSpot = numbers[i]
answer += 'L'
elif (numbers[i] == 3 or numbers[i] == 6 or numbers[i] == 9) :
rightSpot = numbers[i]
answer += 'R'
elif (numbers[i] == 2 or numbers[i] == 5 or numbers[i] == 8 or numbers[i] == 0) :
if(abs(leftSpot - numbers[i]) < abs(rightSpot - numbers[i])) :
leftSpot = numbers[i]
answer += 'L'
elif(abs(leftSpot - numbers[i]) > abs(rightSpot - numbers[i])) :
rightSpot = numbers[i]
answer += 'R'
else :
if hand == 'left' :
leftSpot = numbers[i]
answer += 'L'
else :
rightSpot = numbers[i]
answer += 'R'
return answer

무엇이 문제일까.. 했더니
누른 숫자와 왼손오른손에 위치한 숫자의 거리를 잘못 계산하고 있었던 것!
애초에 나는 숫자끼리 뺀 값이 두 숫자의 거리인줄 알았는데, 아닌 경우도 존재했었다.
다른사람의 풀이를 보니, 키패드를 이렇게 정의했다.
def distance(currentSpotNum, NextNum) :
keypad = { 1: [0,0], 2: [1,0], 3: [2,0],
4: [0,1], 5: [1,1], 6: [2,1],
7: [0,2], 8: [1,2], 9: [2,2],
"x": [0,3], 0: [1,3], "#":[2,3], }
x1, y1 = keypad[currentSpotNum]
x2, y2 = keypad[NextNum]
return abs(x1-x2) + abs(y1-y2)
이해가 잘 안가지만... 이렇게 써주면 거리를 구할수 있다..
다른사람의 풀이
def solution(numbers, hand):
leftSpot = '*' #왼 엄지 위치
rightSpot = '#' #오른 엄지 위치
answer = ''
keypad = { 1: [0,0], 2: [1,0], 3: [2,0],
4: [0,1], 5: [1,1], 6: [2,1],
7: [0,2], 8: [1,2], 9: [2,2],
"x": [0,3], 0: [1,3], "#":[2,3], }
for i in numbers:
if i in [1,4,7] :
answer += 'L'
leftSpot = i
elif i in [3,6,9] :
answer += 'R'
rightSpot = i
elif i in [2,5,8,0] :
curPos = keypad[i]
leftPos = keypad[leftSpot]
rightPos = keypad[rightSpot]
leftDistance = abs(curPos[0]-leftPos[0]) + abs(curPos[1]-leftPos[1])
rightDistance = abs(curPos[0]-rightPos[0]) + abs(curPos[1]-rightPos[1])
if leftDistance > rightDistance :
answer += 'R'
rightSpot = i
elif leftDistance < rightDistance :
answer += 'L'
leftSpot = i
else :
if hand == 'left':
answer += 'L'
leftSpot = i
else :
answer += 'R'
rightSpot=i
return answer
아니 왜 런타임오류가 나는거지?
미치겠네... 다른사람은잘된것같은데..모르겠다.......
'알고리즘 (JAVA) > 프로그래머스 알고리즘' 카테고리의 다른 글
[코테준비 - python] 성격 유형 검사하기 level1 - 개발자 배찌 (0) | 2022.12.06 |
---|---|
[코테준비 - python] 신고 결과 받기 lever1 - 개발자 배찌 (0) | 2022.12.05 |
[코테준비 - python] 이상한 문자 만들기 level1 - 개발자 배찌 (0) | 2022.12.03 |
[코테준비 - python] 실패율 lever1 - 개발자 배찌 (0) | 2022.12.02 |
[프로그래머스] level1. 정수 제곱근 판별 - 개발자 배찌 (0) | 2022.05.12 |