https://www.acmicpc.net/problem/15685
15685번: 드래곤 커브
첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커
www.acmicpc.net
https://github.com/stellaluminary/Baekjoon
GitHub - stellaluminary/Baekjoon
Contribute to stellaluminary/Baekjoon development by creating an account on GitHub.
github.com
본문에서 사용하는 x, y가 아닌 일반적인 그래프에서 사용하는 y, x로 변형하여 문제를 풀이함.
몇 세대인지에 따라 curve 방향을 통한 결과 도출
도출한 curve로 각 좌표별 방문 표기
1x1 정사각형에 해당하는 개수 세기
그림 참조) https://tmdrl5779.tistory.com/146
[백준] 15685번 (python 파이썬)
구현, 시뮬레이션 문제이다. 여기서 중요한것은 일단 x, y좌표가 바뀐것이고 이전 드래곤 커브에서 90도를 돌린 것을 어떻게 붙일것인지? 이것만 금방 생각한다면 쉽게 풀 수 있다. ( 근데 어떻게
tmdrl5779.tistory.com
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)