도저히 어떻게 풀어야할 지 감이 잡히지 않아서 다른 사람의 코드를 봄.
Level5... 아직 제대로 이해하지 못했음.
🔗풀이 참고
https://chldkato.tistory.com/101
from collections import deque
dx = [-1, -1, 0, 1, 1, 1, 0, -1]
dy = [0, 1, 1, 1, 0, -1, -1, -1]
def solution(arrows):
cnt, dir, q = {}, {}, deque()
cnt[(0, 0)] = 0
q.append([0, 0])
x, y, ans = 0, 0, 0
for i in arrows:
for j in range(2):
nx = x + dx[i]
ny = y + dy[i]
cnt[(nx, ny)] = 0
dir[(x, y, nx, ny)] = 0
dir[(nx, ny, x, y)] = 0
q.append([nx, ny])
x, y = nx, ny
x, y = q.popleft()
cnt[(x, y)] = 1
while q:
nx, ny = q.popleft()
if cnt[(nx, ny)] == 1:
if dir[(x, y, nx, ny)] == 0:
ans += 1
dir[(x, y, nx, ny)] = 1
dir[(nx, ny, x, y)] = 1
else:
cnt[(nx, ny)] = 1
dir[(x, y, nx, ny)] = 1
dir[(nx, ny, x, y)] = 1
x, y = nx, ny
return ans
🔗프로그래머스 - 방의 개수
https://programmers.co.kr/learn/courses/30/lessons/49190