백준 15685 드래곤 커브

wook2·2021년 7월 27일
0

알고리즘

목록 보기
42/117

구현과 시뮬레이션에 관한 문제.
방향에 대한 규칙을 찾는게 우선인데, 방향 배열을 저장해놓고 뒤에서부터 탐색해 나가며 (방향+1)%4가 찾고자하는 방향인것을 알 수 있다.

n = int(input())
curves = []
for _ in range(n):
    curves.append(list(map(int,input().split())))

board = [[0 for i in range(101)] for _ in range(101)]

dx = [1,0,-1,0]
dy = [0,-1,0,1]
def getcurve(x,y,d,g):
    board[x][y] = 1
    d_stack = [d]
    for i in range(g):
        temp = []
        for j in range(len(d_stack)-1,-1,-1):
            t = (d_stack[j] + 1) % 4
            temp.append(t)
        d_stack.extend(temp)
    for td in d_stack:
        x += dx[td]
        y += dy[td]
        board[x][y] = 1

for curve in curves:
    x,y,d,g = curve
    getcurve(x,y,d,g)

answer = 0
for i in range(100):
    for j in range(100):
        if board[i][j]:
            if board[i][j+1] and board[i+1][j] and board[i+1][j+1]:
                answer += 1

print(answer)

profile
꾸준히 공부하자

0개의 댓글