Problem : 별 찍기 11
유형 : 분할정복, 재귀
문제 해석
- 규칙을 찾아 별을 출력한다.
문제 재해석
- 패턴을 보고 규칙을 파악한다.
해결 전략
- 일정한 삼각형이 프랙탈 형태로 반복되어진다.
- 어느 한 좌표에서 삼각형이 출력 된다고 생각하면 된다.
- 좌표를 찾는 것은 분할 정복을 통해 찾는다.
설계, 구현
- 기본
board
를 세팅한다. 높이
,좌표
를 가지고 재귀적으로 탐색한다.- 높이가 3인 경우, 삼각형을 출력한다.
- 높이가 3이 아닌 경우, 높이를
1/2
로 줄여본다. - 기준점에서,
y
를 좌측, 우측으로 움직인다.
주의할점
NULL
과공백
은 다르다.
디버깅
- 매크로 정의 사용을 주의하자.
- 만약
#define n 2 * 3 + 1
이 있다면n
은 7이 아니라2 * 3 + 1
로 대체 될 뿐이다.
코드
1 |
|
피드백
- 배경을 미리 만들어두고, 칠하는 방법을 사용할 수 있다는 것을 배웠다.
NULL
을 항상 주의하자- 매크로 정의 사용시 주의하자. 다시는 이런 실수를 반복 하지 않도록…
- 분할 정복은 여전히 굉장히 어렵다.. 연습이 더 필요해 보인다.