문제 풀이
[python] 방문 길이
_tera_
2022. 8. 12. 01:32
https://school.programmers.co.kr/learn/courses/30/lessons/49994
이 문제는 예전에 시도했다가 못 푼 흔적이 남아있는 걸 다 풀고 나서야 봤는데
뭘 푼거야? 문제를 읽긴 한거야? 소리가 절로 나오는 삽질의 현장이었다... 과거의 나야 용케 지금까지 문제 풀고있구나😇
bfs를 이용해서 풀려고 시도했던 흔적이 보이는데 그때는 시뮬레이션 문제라는 걸 풀어본 적이 없어서 아는 걸로 풀어보겠다고 노력했던 것 같다
지금 보니 달팽이나 그리드 회전 문제보다 천사다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
def solution(dirs):
x,y = 0,0 # 시작 위치
table = {
'U':[0,1],
'D':[0,-1],
'L':[-1,0],
'R':[1,0]
} # 테이블에 방향 저장
def in_range(x, y): # 좌표 경계를 벗어나지 않는지 체크하는 함수
return -5 <= x <= 5 and -5 <= y <= 5
visited = set() # 방문한 루트를 중복되지 않게 저장하기 위해 set 이용
for dir in dirs: # 각 명령어마다
dx, dy = table[dir] # 명령어에 맞는 x,y 이동방향을 저장
nx,ny= x+dx, y+dy # x,y를 이동함
if in_range(nx,ny): # 이동한 위치인 nx, ny가 좌표계를 벗어나지 않았다면
visited.add((x,y,nx,ny)) # 현 위치에서 nx,ny로 가는 루트 저장
visited.add((nx,ny,x,y)) # nx,ny 에서 현 위치로 가는 루트 저장
x,y=nx,ny # x,y를 nx,ny로 저장
return len(visited) // 2 # 각 길은 두번 저장되어있으므로 2로 나눠줌
|
cs |