- Today
- 68
- Total
- 244,424
Notice
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Archives
- 2022/08 (1)
- 2022/07 (1)
- 2022/06 (8)
- 2022/05 (5)
- 2022/04 (11)
- 2022/03 (11)
- 2022/02 (1)
- 2022/01 (2)
- 2021/11 (2)
- 2021/10 (2)
- 2021/09 (4)
- 2021/02 (1)
- 2020/07 (1)
- 2020/06 (6)
- 2020/05 (5)
- 2020/04 (5)
- 2020/03 (5)
- 2020/02 (6)
- 2020/01 (6)
- 2019/12 (7)
- 2019/11 (8)
- 2019/09 (7)
- 2019/06 (2)
- 2019/05 (6)
- 2019/04 (4)
- 2019/03 (8)
- 2019/02 (5)
- 2019/01 (2)
- 2018/11 (7)
- 2018/10 (10)
Joonas' Note
BOJ 15685 - 드래곤 커브 본문
링크: https://www.acmicpc.net/problem/15685
문제
알고스팟의 JM북에 그려진 그 드래곤 커브가 맞다.
간단한 수학 규칙으로 그려지는 그림인데, 이 문제에서는 드래곤 커브가 네 꼭지점을 모두 지나는 칸이 몇 개인지 구하는 거였다.
풀이
드래곤 커브의 규칙을 미리 만들어놓고, 드래곤 커브의 시작점과 시작 방향이 주어졌을 때 규칙에 맞게 이동하면서 주변 칸에 해당 꼭지점이 지나갔음을 기록한다.
드래곤 커브는 이전 세대의 드래곤 커브를 이용하기 때문에 반복적인 구조이다. 각 방향과 관련된 변수들을 잘 설정하면 쉽게 구현할 수 있다. 나는 문제에 맞춰 우,상,좌,하 순서로 0,1,2,3을 사용했다.
원소들은 진행 방향, 드래곤 커브를 \(G_0 = \{\dots, a, b, c, d\}\) 이라 하자. 이 커브를 전체 90도 회전하는 것은 각 원소들을 모두 90도 회전한 것과 같다. 즉, \(G_0\)을 90도 회전한 수열 \(G_0' = \{\dots, a', b', c', d'\}\) 이다.
이전 세대를 수열 \(G_0\)라고 하면 다음 세대의 드래곤 커브는 \(G_1 = G_0' + G_0\) 로 전개된다.
0세대부터 10세대까지 미리 구하는 코드는 굉장히 단순하다.
드래곤 커브는 선분, 우리가 확인해야 하는 것은 칸이기 때문에 드래곤 커브가 어떤 점 \((y, x)\)를 지날 때마다, 주변 4칸에 잘 기록하면 된다.
코드
반응형
'알고리즘 > 문제 풀이' 카테고리의 다른 글
BOJ 3075 - Astromeeting (0) | 2018.04.18 |
---|---|
BOJ 15656 - 치킨 배달 (0) | 2018.04.17 |
BOJ 15685 - 드래곤 커브 (0) | 2018.04.17 |
BOJ 12755 - 수면 장애 (0) | 2018.04.17 |
BOJ 2022 - 사다리 (0) | 2018.02.08 |
알고리즘 공부 순서 (0) | 2017.12.08 |
- Tag
- Baekjoon Online Judge, BOJ, 문제풀이, 브루트포스, 알고리즘
0 Comments