https://programmers.co.kr/learn/courses/30/lessons/49994
"""
1. 아이디어
집합 자료형과 방향 벡터를 이용하면 쉽게 풀 수 있는 문제이다.
2. 시간복잡도
o(n)
"""
def solution(dirs):
answer = 0
visited = set()
x, y = 0, 0
dx, dy = [-1, 0, 1, 0], [0, -1, 0, 1]
d = {'U':0, 'L':1, 'D':2, 'R':3}
for dir in dirs:
i = d[dir]
nx, ny = x + dx[i], y + dy[i]
if nx < -5 or nx > 5 or ny < -5 or ny > 5:
continue
if (x, y, nx, ny) not in visited:
visited.add((x, y, nx, ny))
visited.add((nx, ny, x, y)) # 길은 '양방향'
answer += 1
x, y = nx, ny
return answer
그냥 길은 양방향이기 때문에
visited.append((x, y, mx, my))
visited.append((mx, my, x, y))
이게 중요할 뿐
def solution(dirs):
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
d = {'U':0, 'D':1, 'L':2, 'R':3}
visited = []
x, y = 0, 0
answer = 0
for dir in dirs:
mx = x + dx[d[dir]]
my = y + dy[d[dir]]
if mx < -5 or mx > 5 or my < -5 or my > 5:
continue
if (x, y, mx, my) not in visited:
visited.append((x, y, mx, my))
visited.append((mx, my, x, y))
answer += 1
x, y = mx, my
return answer
방향벡터 많이 풀어보기..