RUBY

[백준] 드래곤 커브 | 삼성 본문

PS/BOJ

[백준] 드래곤 커브 | 삼성

RUBY_루비 2020. 9. 14. 23:59

출처::  www.acmicpc.net/problem/15685

분류:: 시뮬레이션

 

1. 문제 이해 및 해결과정

- 방향 0,1,2,3 = → ↑ ← ↓
- 0세대 -> 0
- 1세대 -> 0 1 
- 2세대 -> 0 1 2 1
- 3세대 -> 0 1 2 1 / 2 3 2 1 

- 0 1 2 1 을 거꾸로 하면 1 2 1 0 이 된다. +1을 하면 2 3 2 1 이 된다.  

 

2. 풀이방법

1. python

#드래곤 커브
#https://www.acmicpc.net/problem/15685
import sys
sys.stdin = open("input.txt","r")
board=[[0]*101 for _ in range(101)]
dh=[0,-1,0,1] # -> 위 <- 아래
dw=[1,0,-1,0]
n=int(input())
for _ in range(n):
    x,y,d,g=map(int,input().split())
    board[y][x]=1
    cur=[d]
    for _ in range(g): #세대 수 만큼 
        tmp=cur
        tmp=tmp[::-1] #역순
        for i in range(len(tmp)):
            tmp[i]=(tmp[i]+1)%4
        cur+=tmp #현재것에 커브한 것 더함 , 드래곤커브배열만들어줌
    for dir in cur: #그려주기
        h = y + dh[dir]
        w = x + dw[dir]
        board[h][w]=1
        y,x=h,w

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

 

3. 오답원인

 

4. 알게된 점

 

'PS > BOJ' 카테고리의 다른 글

[백준] 게임개발  (0) 2020.09.15
[백준] 줄세우기  (0) 2020.09.15
[BOJ] 시험 감독 | 삼성  (0) 2020.09.12
[백준] 게리맨더링2 | 삼성  (0) 2020.09.11
[백준] 감시 | 삼성  (0) 2020.09.09
Comments