IT보안관의 공부 클라우드
[프로그래머스 Level1]키패드 누르기 본문
코딩테스트 연습 - 키패드 누르기 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 키패드 누르기
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"
programmers.co.kr
keypad = ["123", # 0
"456", # 1
"789", # 2
"*0#" # 3
]
check_list = [[0,1],[1,0],[0,-1],[-1,0]]
def solution(numbers, hand):
answer = ''
# 현재 손가락 위치
left_ = [3, 0]
right_ = [3, 2]
# left right 간단하게 비교
left = '147'
right = '369'
for num in numbers:
# 현재 idx 위치
j = -1
num = str(num)
idx=[0,0]
for key in keypad:
j += 1
if key.find(num) != -1:
# idx에 현재 num위치 저장 이걸로 left right 비교
idx = [j, key.find(num)]
break
# print('###########num:', num)
# 2 왼쪽 3개의 숫자면 왼손 사용, 오른쪽 3개의 숫자면 오른손 사용
if num in left:
answer += 'L'
left_ = idx
# print(left_)
elif num in right:
answer += 'R'
right_ = idx
# print(right_)
else:
# left 먼저
left1 = left_[0] - idx[0]
left2 = left_[1] - idx[1]
left_idx=[left1,left2]
# print("left_idx:",left_idx)
if left_idx in check_list:
left0=1
else:
left0=abs(left1)+abs(left2)
# right 먼저
right1 = right_[0] - idx[0]
right2 = right_[1] - idx[1]
right_idx=[right1,right2]
# print("right_idx:",right_idx)
if right_idx in check_list:
right0=1
else:
right0=abs(right1)+abs(right2)
# print(left_, right_, idx, left0, right0)
if left0 < right0:
answer += 'L'
left_=idx
elif right0 < left0:
answer += 'R'
right_=idx
else:
if hand[0]=='r':
right_=idx
answer+='R'
else:
left_=idx
answer+='L'
print(left_, right_, idx)
# print("answer:::", answer)
return answer
# print(keypad[0][0],keypad[1][0],keypad[2][0])
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Level1]2016년 (0) | 2022.06.28 |
---|---|
[프로그래머스 Level1]문자열 다루기 기본 (0) | 2022.06.28 |
[프로그래머스 Level1]부족한 금액 계산하기 (0) | 2022.06.28 |
[프로그래머스 Level1]x만큼 간격이 있는 n개의 숫자 (0) | 2022.06.28 |
[프로그래머스 Level1]문자열 내 마음대로 정렬하기 (0) | 2022.06.28 |
Comments