https://www.acmicpc.net/problem/15685
https://github.com/stellaluminary/Baekjoon
본문에서 사용하는 x, y가 아닌 일반적인 그래프에서 사용하는 y, x로 변형하여 문제를 풀이함.
몇 세대인지에 따라 curve 방향을 통한 결과 도출
도출한 curve로 각 좌표별 방문 표기
1x1 정사각형에 해당하는 개수 세기
그림 참조) https://tmdrl5779.tistory.com/146
n = int(input())
graph = [[0] * 101 for _ in range(101)]
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]
for i in range(n) :
y, x, d, g = map(int, input().split())
graph[x][y] = 1
curve = [d]
for j in range(g):
for k in range(len(curve) - 1, -1, -1):
curve.append((curve[k] + 1) % 4)
for j in range(len(curve)):
x += dx[curve[j]]
y += dy[curve[j]]
if not 0 <= x < 101 or not 0 <= y < 101:
continue
graph[x][y] = 1
result = 0
for i in range(100):
for j in range(100):
if [graph[i][j],graph[i+1][j], graph[i][j+1], graph[i+1][j+1]] == [1,1,1,1]:
result += 1
print(result)