mo1lusca의 블로그
[백준] 2447 별 찍기 - 10 - C 본문
https://www.acmicpc.net/problem/2447
n*n 사이즈의 배열에서 공백이 들어가야 할 부분만 값을 바꾸는 방법을 사용하였다.
#include <stdio.h>
int map[6500][6500];
void star(int x, int y, int n) {
if (n == 1) { //n==1일때는 식이 다름
if (x % 3 == 1 && y % 3 == 1) {
map[y][x] = 1;
}
return;
}
else {
star(x, y, n / 3);
if (x / n % 3 == 1 && y / n % 3 == 1) {
map[y][x] = 1;
}
return;
}
star(x, y, n / 3);
return;
}
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
star(j, i, n);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (map[i][j]) {
printf(" ");
}
else {
printf("*");
}
}
printf("\n");
}
return 0;
}
n==1일때는 x%3==1일때만 공백이 나오고, 그 외의 n값에 대해서는 x/n%3==1일떄만 공백이 나온다는 것을 찾았다.
별찍기 문제는 그림으로 그려보는게 규칙 이해에 도움이 되는 것 같다.
'PS' 카테고리의 다른 글
| [백준] 1010 다리 놓기 - C (0) | 2025.05.02 |
|---|---|
| [백준] 9184 신나는 함수 실행 - C (0) | 2025.05.01 |
| [백준] 11729 하노이 탑 이동 순서 - C (0) | 2025.05.01 |
| [백준] 1003 피보나치 함수 - C (0) | 2025.05.01 |
| [백준] 25501 재귀의 귀재 - C (0) | 2025.05.01 |