반응형
문제
https://www.acmicpc.net/problem/2447
풀이
2차원 배열을 이용해 '*' 과 ' ' 정보를 저장을 하고 출력을 했다. 3*3 에서 9개를 기준으로 다음과 같이 재귀문을 반복해서 해결했다.
별 별 별
별 공백 별
별 별 별
별과 공백은 state 변수를 통해 구분을 했고 0일 때 *, 1일 때 공백이 된다. 공백을 배열에 채울 때 n/3 만큼 채워야 하므로 주의해줘야한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#include <iostream>
using namespace std;
const int MAX = 3*3*3*3*3*3*3;
char a[MAX][MAX];
int N;
void solve(int i, int j, int n, int state)
{
int x, y;
if (state)
{
for (x=i; x<i+n; x++)
for (y=j; y<j+n; y++)
a[x][y] = ' ';
}
else
{
if (n == 1)
a[i][j] = '*';
else
{
int m = n/3;
for (int x=0; x<3; x++)
{
for (int y=0; y<3; y++)
{
if (x==1 && y==1)
solve(i+m*x, j+m*y, m, 1);
else
solve(i+m*x, j+m*y, m, 0);
}
}
}
}
}
int main()
{
cin.tie(0);
ios::sync_with_stdio(0);
cin >> N;
solve(0, 0, N, 0);
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout << a[i][j];
cout << '\n';
}
return 0;
}
|
cs |
반응형
'BOJ' 카테고리의 다른 글
백준 1517 - 버블 소트 (0) | 2020.04.14 |
---|---|
백준 13335 - 트럭 (0) | 2020.04.09 |
백준 14503 - 로봇 청소기 (0) | 2020.04.03 |
백준 6549 - 히스토그램에서 가장 큰 직사각형 (0) | 2020.03.27 |
백준 11729 - 하노이 탑 이동 순서 (0) | 2020.03.24 |