[백준 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)
* 틀린 부분이나 더 나은 방법이 있을 수 있습니다. 지적해주시면 감사하겠습니다!!
'posts' 카테고리의 다른 글
[백준 15686번] 치킨 배달 - Python으로 구현하기 (0) | 2019.10.19 |
---|---|
[백준 16234번] 인구 이동 - Python으로 구현하기 (0) | 2019.10.19 |
[백준 16235번] 나무 재테크 - Python으로 구현하기 (0) | 2019.10.19 |
[백준 16236번] 아기 상어 - Python으로 구현하기 (0) | 2019.10.19 |
[백준 17144번] 미세먼지 안녕! - Python으로 구현하기 (0) | 2019.10.19 |