[골드4] 15685번 : 드래곤 커브

Quesuemon·2021년 4월 22일
0

코딩테스트 준비

목록 보기
83/111

🛠 문제

https://www.acmicpc.net/problem/15685


👩🏻‍💻 해결 방법

이동방향의 규칙을 찾는 것이 중요했던 문제다
이동방향의 규칙은 최근 이동한 방향에서부터 (방향 + 1) % 4의 방향으로 진행하는 규칙이었다
따라서 처음 이동방향(d)을 move 리스트에 저장한 뒤, 세대 크기(g)만큼 for문을 돌려주며 move의 뒤에서부터 다음 이동방향을 구해주었다

소스 코드

import sys
input = sys.stdin.readline

dx = [1, 0, -1, 0]
dy = [0, -1, 0, 1]

n = int(input())
board = [[0] * 101 for _ in range(101)]
for _ in range(n):
  x, y, d, g = map(int, input().split())
  board[x][y] = 1
  move = [d]

  for _ in range(g):
    tmp = []
    for i in range(len(move)):
      tmp.append((move[-i-1] + 1) % 4)
    move.extend(tmp)
  
  for i in move:
    nx = x + dx[i]
    ny = y + dy[i]
    board[nx][ny] = 1
    x, y = nx, ny

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

print(answer)

0개의 댓글