티스토리 뷰

0세대: 1

1세대: 1 2

2세대: 1 2 3 2

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

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

...

드래곤 커브의 시작 지점과 방향, 세대가 주어지며 드래곤 커브는 세대에 따라 확장된다. 네 꼭지점이 모두 드래곤 커브에 포함되는

1 * 1 크기의 셀 개수를 구하는 문제이다.

 

처음 문제를 풀 경우 세대마다 드래곤 커브를 구하고 이를 90도 회전하는 알고리즘을 생각할 수 있다. 하지만 이러한 알고리즘을 작성하면 매우 복잡해진다. 대신 드래곤 커브의 방향에서 규칙을 찾으면 문제가 간단해진다. 세대에 따른 선분의 방향을 구하면 아래와 같다.

 

→(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 
...

 

 

N 세대의 방향은 N-1 세대의 역방향 원소에 k 에 대해 (k+1) % 4의 값이 추가되는 것을 알 수 있다. 이렇게 구한 방향을 시작 지점에 대해 적용하면 문제를 해결할 수 있다.

 

Python

 

728x90

'PS > 백준' 카테고리의 다른 글

[백준] 16235 나무 재테크  (0) 2021.03.12
[백준] 15686 치킨 배달  (0) 2021.03.12
[백준] 15684 사다리 조작  (0) 2021.03.10
[백준] 15683 감시  (0) 2021.03.09
[백준] 9663 N-Queen  (0) 2021.03.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함