Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백준5710
- 백준3190
- 백준1788
- 백준 14499
- 백준2573
- 백준1697
- 백준 2564
- 백준16954
- 124 나라의 숫자
- 경비원
- 백준12904
- 부스트캠프
- 백준16234
- 전기 요금
- 움직이는 미로 탈출
- 프로그래머스
- 코딩테스트
- 피보나치 수의 확장
- 단어 수학
- 로또의 최고 순위와 최저 순위
- 백준1339
- 파이썬
- 백준
- 인구 이동
- 완주하지 못한 선수
- A와 B
- 키패드 누르기
- 소수 만들기
- 빙산
- Smart Commit
Archives
- Today
- Total
Today.dev
[PG_67256/Python] 키패드 누르기 본문
문제
풀이
2차원 배열에 키패드 숫자를 넣자니 좌표 구하기가 힘들고 좌표를 넣자니 숫자를 못 구하고, 고민하다가 그냥 딕셔너리로 만들어버렸다. 그리고 bfs 쓸 필요 없는 거 제출하고 나서 알았다; 스스로 난이도 높여서 풀었더라 😥 혹시 이거 보시는 분들은 편하게 절댓값으로 거리 구하세요..
from collections import deque
loc = { # 키패드
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)
}
def bfs(dest, thumb): # 최단거리
q = deque()
q.append(loc[dest])
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]
visited = [[0] * 3 for _ in range(4)]
x, y = loc[dest]
visited[x][y] = 1
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < 4 and 0 <= ny < 3:
if visited[nx][ny] == 0: # 방문 X
if (nx, ny) == thumb:
return visited[x][y]
visited[nx][ny] = visited[x][y] + 1
q.append((nx, ny))
return 0
def left_or_right(dest, left, right, hand): # 어떤 엄지로 누를것인가?
lm = bfs(dest, left)
rm = bfs(dest, right)
if lm < rm:
return 'L'
elif rm < lm:
return 'R'
else:
if hand == "left":
return 'L'
else:
return 'R'
def solution(numbers, hand):
answer = ''
left, right = (3, 0), (3, 2)
for i in numbers:
if i in (1, 4, 7):
answer += 'L'
left = loc[i]
elif i in (3, 6, 9):
answer += 'R'
right = loc[i]
else:
answer += left_or_right(i, left, right, hand)
if answer[-1] == 'L':
left = loc[i]
else:
right = loc[i]
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[PG_42746/Python] 가장 큰 수 (0) | 2021.07.03 |
---|---|
[PG_12899/Python] 124 나라의 숫자 (0) | 2021.07.03 |
[PG_77484/Python] 로또의 최고 순위와 최저 순위 (0) | 2021.06.22 |
[PG_42576/Python] 완주하지 못한 선수 (0) | 2021.06.22 |
[PG_12977/Python] 소수 만들기 (0) | 2021.06.22 |
Comments