🐣 알고리즘 삐약/💻 백준 삐약

19 삐약 : 백준 2447 [C++]

우주수첩 2022. 4. 10. 15:01
728x90

https://www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net

 

 

#include <iostream>
using namespace std;

void star(int i, int j, int num) {
	if ((i / num) % 3 == 1 && (j / num) % 3 == 1) {
		cout << ' ';
	}
	else {
		if (num / 3 == 0) cout << '*';
		else star(i, j, num / 3);
	}
}
int main() {
	int num;
	cin >> num;
	for (int i = 0; i < num; i++) {
		for (int j = 0; j < num; j++) {
			star(i, j, num);
		}
			cout << '\n';
	}
}

 

 

 

어려웡 어열월우러ㅜㅇㄹ얼ㅇㄹㅇ 

가장 먼저 규칙을 찾아 보았다.

3의 제곱수를 한 변으로 가지고 있는 정사각형 모양이 가운데는 공백으로 채워져있는 형태가

크기는 작아지지만 반복된다.

 

3x3일때의 중앙 공백은 (1,1)에 존재하고

9x9일때의 중앙 공백은 (3,3),(3,4),(3,5),(4,3),(4,4),(4,5),(5,3),(5,4),(5,5)에 위치한다.

이는 i/3 ==1 && j/3 ==1일 경우 공백 출력에 해당된다.

또한 같은 형태가 반복되기 때문에 입력받은 수를 3으로 나누어가면 작은 크기 부터 처리하기로 생각하였다.

 

728x90

'🐣 알고리즘 삐약 > 💻 백준 삐약' 카테고리의 다른 글

21 삐약 : 백준 17478 [C++]  (0) 2022.04.10
20 삐약 : 백준 11729 [C++]  (0) 2022.04.10
18 삐약 : 백준 10870 [C++]  (0) 2022.04.10
17 삐약 : 백준 10872 [C++]  (0) 2022.04.10
16 삐약 : 백준 9020 [JAVA]  (0) 2022.03.24