2447번: 별 찍기 - 10
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이
www.acmicpc.net
- 구글링을 통해 해답을 참고하여도 바로바로 이해하지 못 했던 문제, 분할 정복으로 생각하여 풀어야했다.
- 비어있는 공간의 규칙은 (1 == (row / N) % 3 && 1 == (col / N) % 3) 이다.
- 그 이외의 좌표에는 '*'이 찍힌다.
- 중단점을 이용해 함수의 수행과정을 확인해야 이해할 수 있었다.
더보기
#include <iostream>
void PrintStar(const int row, const int col, const int N)
{
if ((1 == (row / N) % 3) && (1 == (col / N) % 3))
{
printf(" ");
}
else
{
if (0 == N / 3)
printf("*");
else
PrintStar(row, col, N / 3);
}
}
int main()
{
// init
std::ios::sync_with_stdio(false);
// input
int N = 0;
(void)scanf("%d", &N);
for (int row = 0; row < N; row++)
{
for (int col = 0; col < N; col++)
{
PrintStar(row, col, N);
}
printf("\n");
}
return 0;
}
'Coding Problem > 백준' 카테고리의 다른 글
[백준] 2580 - 스도쿠 (0) | 2021.05.23 |
---|---|
[백준] 18870 - 좌표 압축 (0) | 2021.05.03 |
[백준] 11653 - 소인수분해 (0) | 2021.04.17 |
[백준] 10757 - 큰수 A+B (0) | 2021.04.17 |
[백준] 11004번 - K번째 수 (0) | 2021.01.26 |