https://programmers.co.kr/learn/courses/30/lessons/67256
1. 유형: 구현, 딕셔너리
2. 풀이:
1)
1 (0,0) | 2 (0,1) | 3 (0,2) |
4 (1,0) | 5 (1,1) | 6 (1,2) |
7 (2,0) | 8 (2,1) | 9 (2,2) |
* (3,0) | 0 (3,1) | # (3,2) |
위 같은 형식으로 딕셔너리 만듬
2) 왼쪽손, 오른쪽손 좌표를 매 순서마다 저장
3.코드
def compare(l, r, t, hand):
leftdist = abs(l[0] - t[0]) + abs(l[1] - t[1])
rightdist = abs(r[0] - t[0]) + abs(r[1] - t[1])
if leftdist > rightdist:
return 'R'
elif leftdist < rightdist:
return 'L'
else:
res = 'R' if hand == 'right' else 'L'
return res
def solution(numbers, hand):
answer = ''
dic = {
0: (3, 1), 1: (0, 0), 2: (0, 1), 3: (0, 2),
4: (1, 0), 5: (1, 1), 6: (1, 2),
7: (2, 0), 8: (2, 1), 9: (2, 2)
}
leftpos = [3, 0]
rightpos = [3, 2]
for number in numbers:
if number in (1, 4, 7):
answer += 'L'
leftpos = [dic[number][0], dic[number][1]]
elif number in (3, 6, 9):
answer += 'R'
rightpos = [dic[number][0], dic[number][1]]
else:
tmp = [dic[number][0], dic[number][1]]
if compare(leftpos, rightpos, tmp, hand)=='R':
rightpos = [tmp[0], tmp[1]]
answer+='R'
else:
leftpos=[tmp[0], tmp[1]]
answer+='L'
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 가장 먼 노드 (0) | 2021.05.25 |
---|---|
프로그래머스 - 기지국 설치 (0) | 2021.05.24 |
프로그래머스 - (python) 배달 (0) | 2021.05.19 |
프로그래머스 - (Python)실패율 (0) | 2021.05.12 |
프로그래머스 - (Python, Java) 오픈채팅방 (0) | 2021.05.03 |