dy, dx = [-1, 1, 0, 0], [0, 0, -1, 1]
cmd = {'U': 0, 'D': 1, 'L': 2, 'R': 3}
def solution(dirs):
visited = [[[0] * 4 for _ in range(11)] for _ in range(11)]
cur = [5, 5]
ans = 0
for i in dirs:
y = cur[0]
x = cur[1]
ny = y + dy[cmd[i]]
nx = x + dx[cmd[i]]
if ny < 0 or nx < 0 or ny >= 11 or nx >= 11:
continue
cur = [ny, nx]
if i == 'U':
if visited[ny][nx][1] == 0:
ans += 1
visited[y][x][0] = 1
visited[ny][nx][1] = 1
elif i == 'D':
if visited[ny][nx][0] == 0:
ans += 1
visited[y][x][1] = 1
visited[ny][nx][0] = 1
elif i == 'L':
if visited[ny][nx][3] == 0:
ans += 1
visited[y][x][2] = 1
visited[ny][nx][3] = 1
else:
if visited[ny][nx][2] == 0:
ans += 1
visited[y][x][3] = 1
visited[ny][nx][2] = 1
return ans
각 지점마다 상하좌우의 visited을 따로 관리해주기 위해 3차원 배열로 visited을 만들었다.
3차원 배열 선언을 처음에 잘못해서 제대로 동작하지 않았다!
그 부분만 조심하면 쉽게 해결하는 문제.
'Algorithm | SQL > Programmers' 카테고리의 다른 글
[Programmers | Level 2] 오픈채팅방 (Python) (2019 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |
---|---|
[Programmers | Level 2] 게임 맵 최단거리 (Python) (0) | 2021.05.04 |
[Programmers | Level 2] 행렬의 곱셈 (Python) (0) | 2021.04.30 |
[Programmers | Level 2] 프린터 (Python) (0) | 2021.04.30 |
[Programmers | Level 2] 다리를 지나는 트럭 (Python) (0) | 2021.04.30 |