n = int(input())
check = [[0] * 101 for _ in range(101)]
def curve(d, g):
drt = [d]
for k in range(g):
for i in range(len(drt)-1,-1,-1):
u = (drt[i]-1) % 4
if u == 0 or u == 2:
drt.append(2-u)
elif u == 1 or u == 3:
drt.append(4-u)
return drt
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]
curve_on = []
def curve_where(x, y, drt):
curve_on.append((x, y))
for i in drt:
nx, ny = x + dx[i], y + dy[i]
x, y = nx, ny
if nx < 0 or ny < 0 or nx > 100 or ny > 100:
continue
curve_on.append((nx, ny))
for _ in range(n):
y, x, d, g = map(int, input().split())
drt = curve(d, g)
curve_where(x, y, drt)
print(curve_on)
for x, y in curve_on:
check[x][y] = 1
cnt = 0
for i in range(100):
for j in range(100):
if check[i][j] == 1 and check[i+1][j] == 1 and check[i+1][j+1] == 1 and check[i][j+1] == 1:
cnt += 1
print(cnt)
나의 문제
1. 정사각형 구하는 걸 복잡하게 생각 : 간단하게 check 와 for 문으로 해결하면 될걸 배열을 만들어서 거기 모든 정사각형을 넣고 확인하려고 듬.
2. 이 문제의 x, y가 행렬이 뒤바뀌어 있었는데 그냥 x = 행 y = 열 이라고 생각함. 입혁시 y, x 순서를 바꿔서 해결하긴 했지만 이런 문제에 적응이 필요해보이긴 한다
구현은
<세대별 드래곤 커브의 방향 변화 찾기 -> 이에 따라 이동하며 좌표, check 배열에 표시 -> cnt 세기>