https://www.acmicpc.net/problem/2447
Idea
3의 거듭제곱인 값(3, 9, 27 ...)을 입력받는데, 3을 입력받는 경우 3x3인 정사각형 별이 그려지고 9인 경우 9x9, 27인 경우 27x27의 정사각형이 그려진다. 출력값에는 별과 공백 두 가지가 있으며 두 가지 조건을 찾아 공식을 유도해내면 문제를 풀 수 있다.
Code
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
// condition 1 printSpace
// if row % N == 1 && col % N == 1
// ->
// condition 2 printStar
// else
void printSpace();
void printStar(int N, int row, int col);
int main(void) {
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printStar(N, i, j);
}
printf("\n");
}
return 0;
}
void printSpace() {
printf(" ");
}
void printStar(int N, int row, int col) {
if ((row / N) % 3 == 1 && (col / N) % 3 == 1) {
printSpace();
}
else {
if (N / 3 == 0) {
printf("*");
}
else {
printStar(N / 3, row, col);
}
}
}