728x90
https://www.acmicpc.net/problem/2447
#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 |