키패드 누르기 _ Lv.1
2022. 9. 6. 22:52ㆍ2022/Programmers_Kakao 기출
이번 문제는 쪼꼼 시간이 들었지만 0이 키패드를 좌표로 나타냈을 때 [3, 1]에 위치한다는 점, 처음 손가락이 *과 #에 위치한다는 점을 간과하여 시간이 더 들었다.
그래도 키패드를 좌표화 해서 풀면 크게 어렵지 않은 문제였다 :)
def solution(numbers, hand):
# 1, 4, 7은 왼쪽 엄지
# 3, 6, 9는 오른쪽 엄지
# 2, 5, 8, 0은 두 엄지손가락의 현재 키패드 위치에서 더 가까운 엄지손가락 - 둘다 거리가 같다면 오른손잡이는 오른쪽, 왼손잡이는 왼쪽
answer = ''
rh = 0; lh = 0; d = [[3, 1], [0,0], [0,1], [0,2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
handLocR = [3, 0]; handLocL = [3, 2]
for num in numbers:
if num in [1, 4, 7]:
answer+="L"; lh = num; handLocL = d[lh]
elif num in [3, 6, 9]:
answer+="R"; rh = num; handLocR = d[rh]
else:
if abs(handLocR[0]-d[num][0]) + abs(handLocR[1]-d[num][1]) < abs(handLocL[0]-d[num][0]) + abs(handLocL[1]-d[num][1]):
answer+="R"; rh = num; handLocR = d[rh]
elif abs(handLocR[0]-d[num][0]) + abs(handLocR[1]-d[num][1]) > abs(handLocL[0]-d[num][0]) + abs(handLocL[1]-d[num][1]):
answer += "L"; lh = num; handLocL = d[lh]
else:
answer+=hand.upper()[0]
if hand.upper()[0] == "R":
rh = num; handLocR = d[rh]
else: lh = num; handLocL = d[lh]
return answer
'2022 > Programmers_Kakao 기출' 카테고리의 다른 글
크레인 인형뽑기 게임 _ Lv.1 (0) | 2022.09.09 |
---|---|
성격 유형 검사하기 _ Lv.1 (0) | 2022.09.06 |
숫자 문자열과 영단어 _ Lv.1 (0) | 2022.09.05 |
신규 아이디 추천 _ Lv.1 (0) | 2022.09.04 |
신고결과받기 _ Lv.1 (0) | 2022.09.04 |