Coding Problem/백준

[백준] 2447 - 별 찍기 - 10

마탁이 2021. 4. 29. 21:04

www.acmicpc.net/problem/2447

 

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