728x90
문제 설명
- 일정한 규칙에 따라 세대를 거듭해 성장하는 드레곤 커브를 구현하면 되는 구현 문제
- 드래곤 커브가 성장하는 규칙을 어떻게 구현할 지 생각해내는 것이 어려운 문제
고민한 부분
드래곤 커브가 성장하는 규칙은 K 세대의 커브의 끝 점을 기준으로 K 세대의 커브 전체를 시계 방향으로 90도 회전시켜 붙인 것이다.
- 이전 세대의 마지막 점부터 시작점까지 역순으로 이동해 온 경로의 역순으로 이동한 방향을 반시계 방향으로 90도 회전시켜 그에 맞게 커브를 성장시키면 된다. 아래 그림을 보면 이해하기 쉽다.
- 2세대 커브는 [우 상 좌 상]으로 이동하며 그려짐
- 3세대 커브는 2세대 커브가 그려진 순서의 역순 [상 좌 상 우]를 각각 반시계 방향으로 회전시킨 방향인 [좌 하 좌 상] 순서로 선분을 추가해준다.
- 세대가 거듭할 때 이런 식으로 누적된 경로를 역순으로 회전시킨 방향으로 이동하면 드래곤 커브가 완성된다.
- 아래
path_list
가 이런 기능을 구현하는 함수로 가장 중요하다.
Lesson learned
- BFS, DFS나 다이나믹 프로그래밍과 같이 특정한 방법을 알고 있어야 푸는 문제가 아닌 단순 구현 문제는 문제를 잘 읽고 그 조건을 구현하면 되기 때문에 틀리고 난 후에 명확하게 배울 수 있는 점을 찾기 어렵다.
- 지금까지 구현 문제를 풀며 반복되는 실수는 문제를 잘못 이해하거나 조건을 누락하며 읽는 실수를 많이 한다는 점이다.
- 규칙에 따라 방향을 바꾸는 경우 시계 방향, 반시계 방향을 헷갈리는 등의 실수를 자주하는 것을 깨달았다.
'알고리즘 공부 > 백준 문제풀이' 카테고리의 다른 글
[백준 python] 23288번 주사위 굴리기 2 (0) | 2022.08.15 |
---|---|
[python 백준] 14890번 경사로 (2) | 2022.08.07 |
[백준 python] 14501번 퇴사 (0) | 2022.08.05 |
[백준 python] 14889번 스타트와 링크 (0) | 2022.08.05 |
[백준 python] 14891번 톱니바퀴 (0) | 2022.08.05 |