안녕하세요 :)
https://programmers.co.kr/learn/courses/30/lessons/49994
풀이
이 문제는 지금좌표와 이동할좌표를 구해 방문했는지 안했는지를 check하는 Set을 이용해서 풀었습니다.
첫 시작하는 좌표는 (5, 5)로 했습니다.
문제 예시 1번 명령어(L)이면, (5, 4)와 (5, 5) 사이를 방문하게 되는데요.
순서는 상관이 없으므로 이 두개를 모두 check해주면 되겠습니다.
(5, 4) (5, 5)
(5, 5) (5, 4)
d = {
'U': [-1, 0],
'D': [1, 0],
'R': [0, 1],
'L': [0, -1]
}
def solution(dirs):
check = set()
pos = [5, 5]
ans = 0
for dir in dirs:
x, y = pos
dx, dy = d[dir]
new_x , new_y = x + dx, y + dy
key_1 = f'{x}{y}{new_x}{new_y}'
key_2 = f'{new_x}{new_y}{x}{y}'
if 0 <= new_x <= 10 and 0 <= new_y <= 10:
pos = [new_x, new_y]
if key_1 not in check:
ans += 1
check.add(key_1)
check.add(key_2)
return ans