[백준 15685번] 드래곤 커브 - Python으로 구현하기

 

문제 접근

  • 규칙성을 찾아봐야 하는 문제

* 드래곤 커브의 규칙은 다음과 같다.

방향이 0 인 드래곤 커브의 세대별 방향 정보 규칙

0세대 : 0

1세대 : 0 1

2세대 : 0 1 2 1

3세대 : 0 1 2 1 2 3 2 1

4세대 : 0 1 2 1 2 3 2 1 2 3 0 3 2 3 2 1

...

그 전 세대의 reverse로 +1 씩 증가하는 형태이다.

 

 

 

생각해볼 점

  • 규칙없이 풀 수 있을까? 단순 구현으로!

 

오답 분석

  • x,y 좌표가 행렬의 row,col과 반대로 주어져 그림이 잘못 그려질 수 있다. 주의!

 

N = int(input())
map_data = [[1]*101 for _ in range(101)]
di = {0:[0,1],1:[-1,0],2:[0,-1],3:[1,0]}
for _ in range(N):
    x,y,d,g,=map(int,input().split())

    curve_info=[d]
    for _ in range(g):
        curve_info += [(i+1)%4 for i in curve_info[::-1]]
    map_data[y][x]=0
    nx=x
    ny=y
    print(curve_info)
    for curve in curve_info:
        nx=nx+di[curve][1]
        ny=ny+di[curve][0]
        map_data[ny][nx]=0

for i in map_data:
    print(i)

# 정답 구하기
cnt=0
for i in range(100):
    for j in range(100):
        if map_data[i][j]+map_data[i][j+1]+map_data[i+1][j]+map_data[i+1][j+1]==0:
            cnt+=1
print(cnt)

 

* 틀린 부분이나 더 나은 방법이 있을 수 있습니다. 지적해주시면 감사하겠습니다!!

+ Recent posts