[프로그래머스] 스터디
2021.06.20
프로그래머스 스터디 1일차
키패드 누르기
문제
- 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다.
- 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다.
- 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다.
- 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다.
- 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다.
- 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다.
4-1. 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다.
문제
- 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다.
- 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다.
- 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다.
- 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다.
- 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다.
- 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다.
4-1. 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다.
처음 30분동안 각자 문제풀기
같이 스터디하는 동생(K)는 10~20분만에 금방 풀었는데 나는 못 풀었다,,
내가 처음 짠 코드는
- 키패드를 리스트로 keypad에 할당
- 키패드 숫자와 좌표를 사용하는 과정에서 뇌정지
K가 짠 코드를 설명해주는데
- keypad에 딕셔너리를 사용
- 1,4,7과 3,6,9를 리스트로 사용
이 두 가지를 생각 못해서 못풀고 있었다.
K는 이동거리를 상하좌우가 아닌 직선거리로 계산해 제출하는과정에서 실패한 문제가 있었고
각자 20분정도 코드 수정을 했고, 내가 수정한 코드는 다음과 같다.
def solution(numbers, hand):
# 키패드 정의
keypad = {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)}
# 처음 손가락 위치
LH = keypad["*"]
RH = keypad["#"]
# 왼손, 오른손 숫자
left = [1, 4, 7]
right = [3, 6, 9]
# 답
answer = ''
# 코드
for i in numbers:
if i in left:
LH = keypad[i]
answer += "L"
elif i in right:
RH = keypad[i]
answer += "R"
else:
# 오른속, 왼손 이동거리
r_move = abs(RH[0] - keypad[i][0]) + abs(RH[1] - keypad[i][1])
l_move = abs(LH[0] - keypad[i][0]) + abs(LH[1] - keypad[i][1])
if r_move > l_move:
LH = keypad[i]
answer += "L"
elif r_move < l_move:
RH = keypad[i]
answer += "R"
else:
if hand == "left":
LH = keypad[i]
answer += "L"
else:
RH = keypad[i]
answer += "R"
return answer
제출하고나니 다른 사람들이 제출한 코드도 볼 수 있었는데
내가 생각한 방식 외 다양한 방식의 코드를 볼 수 있어 좋았다.
생각보다 재밌고 시간도 잘가는게 주 1회 너무 적은 것 같기도 하고,,?
Author And Source
이 문제에 관하여([프로그래머스] 스터디), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lhw8187/프로그래머스-스터디저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)