Notice
Recent Posts
Link
정화 코딩
[C++] 별 찍기 - 11 (백준 2448번) 본문
https://www.acmicpc.net/problem/2448
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n;
vector<vector<char>> ans;
void recur(int si, int ni, int sj, int nj) {
if (ni == 3) {
ans[si][sj + 2] = '*';
ans[si + 1][sj + 1] = '*';
ans[si + 1][sj + 3] = '*';
ans[si + 2][sj] = '*';
ans[si + 2][sj + 1] = '*';
ans[si + 2][sj + 2] = '*';
ans[si + 2][sj + 3] = '*';
ans[si + 2][sj + 4] = '*';
return;
}
recur(si, ni / 2, sj + nj / 4 + 1, nj / 2);
recur(si + ni / 2, ni / 2, sj, nj / 2);
recur(si + ni / 2, ni / 2, sj + nj / 2 + 1, nj / 2);
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
ans = vector<vector<char>>(n, vector<char>(2 * n - 1, ' '));
recur(0, n, 0, 2 * n - 1);
for (int i = 0; i < n; i++) {
for (int j = 0; j < 2 * n - 1; j++) {
cout << ans[i][j];
}
cout << '\n';
}
}
모양부터가 재귀임을 알려주고 있다. ans라는 2차원 char배열을 선언하여 전부 ' '(공백)으로 초기화하고 재귀함수를 호출하며 칸을 채웠다. 세로 길이가 3인 삼각형까지 쪼갰다면 모양에 맞춰 '*'(별)을 채우고 종료한다. (AC)
'PS' 카테고리의 다른 글
[C++] 내려가기 (백준 2096번) (0) | 2024.11.25 |
---|---|
[C++] 알파벳 (백준 1987번) (0) | 2024.11.24 |
[C++] 특정한 최단 경로 (백준 1504번) (0) | 2024.11.21 |
[C++] 트리의 지름 (백준 1967번) (0) | 2024.11.19 |
[C++] 숨바꼭질 3 (백준 13549번) (0) | 2024.11.14 |
Comments