문제
https://programmers.co.kr/learn/courses/30/lessons/67256
풀이
문제에서 시키는대로 구현하면 되는 문제였다.
정말 이대로 구현하면 됐다.
이전 손의 위치가 다음 번호를 누를 손을 결정할 때 필요하기 때문에 손의 위치 정보를 저장해 두기로 했다.
다만 1번에서 한 칸 거리를 1로 해당한다는 조건을 제대로 읽지 않아 피타고라스 공식으로 거리를 구했었다가 오류가 나서 고쳤다.
질문하기에도 나와 같은 사람들이 많았다.
실제 세계에서는 보통 직선거리로 계산하기 때문에 사람들이 착각한 것 같다.
def getLoc(number):
if number == 0:
return (2, 4)
else:
return ((number-1)%3 + 1, (number-1)//3 + 1)
def solution(numbers, hand):
answer = []
lefts = [1, 4, 7]
rights = [3, 6, 9]
leftLoc = (1, 4)
rightLoc = (3, 4)
for n in numbers:
if n in lefts:
answer.append('L')
leftLoc = getLoc(n)
elif n in rights:
answer.append('R')
rightLoc = getLoc(n)
else:
loc = getLoc(n)
leftDistance = abs(loc[0]-leftLoc[0]) + abs(loc[1] - leftLoc[1])
rightDistance = abs(loc[0]-rightLoc[0]) + abs(loc[1] - rightLoc[1])
if leftDistance > rightDistance:
rightLoc = getLoc(n)
answer.append('R')
elif rightDistance > leftDistance:
leftLoc = getLoc(n)
answer.append('L')
else:
if hand == 'right':
rightLoc = getLoc(n)
answer.append('R')
else:
leftLoc = getLoc(n)
answer.append('L')
return ''.join(answer)
짜다보이 이렇게 됐는데 매번 getLoc으로 저장할 필요 없이 그냥 번호로 저장해두고 사용할 때 getLoc 했으면 더 좋았을 것 같다.
'알고리즘 스터디 2021.07~' 카테고리의 다른 글
[프로그래머스] 2019 카카오 블라인드 - 블록 게임 (0) | 2021.08.29 |
---|---|
[프로그래머스] 2020 카카오 블라인드 - 괄호 변환 (0) | 2021.08.22 |
[프로그래머스] 2018 카카오 블라인드 [1차] 뉴스 클러스터링 (0) | 2021.08.08 |
[프로그래머스] 2020 카카오 인턴십 수식 최대화 (0) | 2021.08.07 |
[프로그래머스] 2018 카카오 블라인드 - [1차] 추석 트래픽 (0) | 2021.07.16 |