<[카카오 인턴] 키패드 누르기>
문제(출처: https://school.programmers.co.kr/learn/courses/30/lessons/67256)
문제 풀이
- my solution
def solution(numbers, hand):
answer = ''
# 12 = 키패드 *을 의미, 10 = 키패드 #을 의미
tempR = 12 #오른손 위치 저장
tempL = 10 #왼손 위치 저장
for i in range(len(numbers)):
if (numbers[i] == 0): #키패드 0 -> 계산을 위해 11로 변경
numbers[i] = 11
if (numbers[i] == 1 or numbers[i] == 4 or numbers[i] == 7): #1,4,7인 경우 왼손
answer += "L"
tempL = numbers[i]
elif (numbers[i] == 3 or numbers[i] == 6 or numbers[i] == 9): #3,6,9인 경우 오른손
answer += "R"
tempR = numbers[i]
else: #2,5,8,7인 경우
#거리 구함
temp1 = abs(numbers[i] - tempL)
temp2 = abs(numbers[i] - tempR)
dstL = 0
dstR = 0
#거리 별로 숫자 부여
if (temp1 == 1 or temp1 == 3):
dstL = 1
elif (temp1 == 2 or temp1 == 4 or temp1 == 6):
dstL = 2
elif (temp1 == 5 or temp1 == 7 or temp1 == 9):
dstL = 3
elif (temp1 == 8 or temp1 == 10):
dstL = 4
if (temp2 == 1 or temp2 == 3):
dstR = 1
elif (temp2 == 2 or temp2 == 4 or temp2 == 6):
dstR = 2
elif (temp2 == 5 or temp2 == 7 or temp2 == 9):
dstR = 3
elif (temp2 == 8 or temp2 == 10):
dstR = 4
if (dstL < dstR): #왼손이 더 가까운 경우
answer += "L"
tempL = numbers[i]
elif (dstL == dstR): #거리 같은 경우 hand따라
if (hand == "right"):
answer += "R"
tempR = numbers[i]
else:
answer += "L"
tempL = numbers[i]
else: #오른손이 더 가까운 경우
answer += "R"
tempR = numbers[i]
return answer
계산의 편리를 위하여 * = 10, 0 = 11, # = 12로 바꾸어 문제를 해결
1) 1,4,7인 경우 왼손, 3,6,9인 경우 오른손을 answer에 저장
2) 그 외의 경우 -> 거리 구하기
2-1) 차를 이용하여 거리를 구해 각 거리별로 숫자 부여
- 차가 1,3인 경우: 1
- 차가 2,4,6인 경우: 2
- 차가 5,7,9인 경우: 3
- 차가 8,10인 경우: 4
2-2) 2-1)에서 구한 숫자를 이용하여 더 가까운 손은 answer에 저장
- 왼손이 더 가까운 경우: L
- 오른손이 더 가까운 경우: R
- 거리가 같은 경우: hand 따라
고려해야 할 것이 많은 문제였기에 다른 문제들보다 해결하는데 시간이 조금 더 걸렸다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'🌞Algorithm > 🔥programmers' 카테고리의 다른 글
| [programmers] 두 개 뽑아서 더하기 - 월간 코드 챌린지 시즌1 (1) | 2021.01.11 |
|---|---|
| [programmers] [1차] 다트 게임 - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.01.04 |
| [programmers] 실패율 - 2019 KAKAO BLIND RECRUITMENT (0) | 2021.01.03 |
| [programmers] [1차] 비밀지도 - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.01.03 |
| [programmers] 크레인 인형뽑기 게임 -2019 카카오 개발자 겨울 인턴십 (1) | 2021.01.03 |