일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- BFS
- 투포인터
- 다이나믹프로그래밍
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- java #자바 #나동빈
- 백트랙킹
- 파이썬
- css #생활코딩 #웹
- react #리액트 #동빈나
- 코딩테스트
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- PYTHON
- 백준 #파이썬 #알고리즘 #코딩테스트
- 백준 #알고리즘 #파이썬 #코딩테스트
- css #웹 #생활코딩
- 다익스트라
- java #자바
- 파이썬 #백준 #알고리즘 #코딩테스트
- react #리액트 #동빈나 #나동빈 #유튜브강의
- java #자바 #동빈나
- Dijkstra
- 백준
- DFS
- 자바 #java
- 프로그래머스
- java #자바 #생활코딩
- dp
- 알고리즘
- 재귀
Archives
- Today
- Total
커리까지
프로그래머스 2020 카카오 인턴십 키패드 누르기 파이썬 본문
728x90
SMALL
문제링크
제출 답안
def solution(numbers, hand):
right_dict = {2:{2:0,3:1,5:1,6:2,8:2,9:3,'#':4,0:3},5:{2:1,3:2,5:0,6:1,8:1,9:2,'#':3,0:2},8:{2:2,3:3,5:1,6:2,8:0,9:1,'#':2,0:1},0:{2:3,3:4,5:2,6:3,8:1,9:2,'#':1,0:0}}
left_dict = {2:{1:1,2:0,4:2,5:1,7:3,8:2,'*':4,0:3},5:{1:2,2:1,4:1,5:0,7:2,8:1,'*':3,0:2},8:{1:3,2:2,4:2,5:1,7:1,8:0,'*':2,0:1},0:{1:4,2:3,4:3,5:2,7:2,8:1,'*':1,0:0}}
answer = ''
left = '*'
right = '#'
for num in numbers:
if num in [1,4,7]:
answer += 'L'
left = num
elif num in [3,6,9]:
answer += 'R'
right = num
elif num in [2,5,8,0]:
rightnum, leftnum = right_dict[num][right], left_dict[num][left]
if rightnum < leftnum:
answer += 'R'
right = num
elif leftnum < rightnum:
answer +='L'
left = num
elif rightnum == leftnum:
answer += hand[0].upper()
if hand[0].upper() == 'R':
right = num
else:
left = num
print(answer)
return answer
a = [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5]
solution(a, 'right')
- 우선 2,5,8,0에 해당되는 오른쪽 왼쪽 길이를 딕셔너리로 만들어서 각 길이를 저장하였다.
- 맨 처음에 left와 right를 초기화하고 진행한다.
- 왼쪽에 해당되는 숫자랑 오른쪽에 해당되는 숫자인경우에 answer에 각각 해당되는 문자를 더하고 left와 right를 현재 들어온 숫자로 다시 바꾼다.
- 2,5,8,0이면 이번에 해당되는 숫자에서 지금까지 저장된 left와 right의 길이를 비교하고 작은쪽을 answer에 더하고 같으면 hand의 첫글자만 대문자로 바꿔서 더하고 이 대문자를 비교해서 오른쪽과 왼쪽의 값을 다시 초기화한다.
- 그리고 출력하면 끝!
- 문제의 의도는 bfs같았지만.....그냥 딕셔너리로 하는게 문제 푸는 시간을 줄일것 같았다. bfs는 어떻게 구성해야할지 감도 안왔당...
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
백준 1987번 알파벳 파이썬 (0) | 2021.02.11 |
---|---|
프로그래머스 2021 카카오 블라인드 순위검색 파이썬 (0) | 2021.02.10 |
백준 5430번 AC 파이썬 (0) | 2021.02.09 |
백준 3986번 좋은 단어 파이썬 (0) | 2021.02.04 |
백준 1475번 방 번호 파이썬 (0) | 2021.02.03 |