문제 링크
LV 2: 방문 길이
구현 방식
- 문제에서 안내한대로 구현해주면 된다
- d라는 dictionary를 이용해 각 명령어 'U', 'D', 'R', 'L'를 해당하는 변위값으로 바로 변환할 수 있게 해주었다
- visit라는 set을 이용해 해당 길이 처음 걸어본 길인지 아닌지를 판별해주었다
- 이 부분에선 1)'길' 단위로 값을 확인 및 삽입해줘야하고, 2)캐릭터가 (x1, y1)에서 (x2, y2)로 이동한다고 치면, (x1, y1, x2, y2), (x2, y2, x1, y1)을 모두 확인 및 삽입해줘야한다
코드
def solution(dirs):
d = {"U": (1, 0), "D": (-1, 0), "R": (0, 1), "L": (0, -1)}
answer = 0; x = 0; y = 0
visit = set()
for dir in dirs:
nx = x + d[dir][0]; ny = y + d[dir][1]
if -5 <= nx <= 5 and -5 <= ny <= 5:
if (x, y, nx, ny) not in visit and (nx, ny, x, y) not in visit:
visit.add((x, y, nx, ny)); visit.add((nx, ny, x, y))
answer += 1
x = nx; y = ny
else:
x = nx; y = ny
return answer