재귀함수를 정의해 봅시다.
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N이 주어진다. N은 항상 3의 제곱꼴인 수이다. (3, 9, 27, ...) (N=3k, 1 ≤ k < 8)
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
Input
27
Output
My Solution
#include <iostream>
using namespace std;
char arr[7000][7000] = {0,};
void inpStar(int n, int x, int y){
if(n == 1){
arr[x][y] = '*';
return;
}
int val = n/3;
for(int i = 0; i < 3; ++i){
for(int j = 0; j < 3; ++j){
if(i == 1 && j == 1)
continue;
else
inpStar(val, x + i*val, y + j*val);
}
}
}
int main(void){
int N = 0;
cin >> N;
for(int i = 0; i < N; ++i){
for(int j = 0; j < N; ++j){
arr[i][j] = ' ';
}
}
inpStar(N, 0, 0);
for(int i = 0; i < N; ++i){
for(int j = 0; j < N; ++j){
cout << arr[i][j];
}
cout << endl;
}
return 0;
}
'Problem_Solving' 카테고리의 다른 글
[BOJ] 백준 1011 Fly me to the Alpha Centauri (2) | 2020.01.07 |
---|---|
[BOJ] 백준 2869 달팽이는 올라가고 싶다 (0) | 2020.01.03 |
[BOJ] 백준 10872 팩토리얼 (0) | 2019.10.05 |
[BOJ] 백준 1065 한수 (0) | 2019.10.05 |
[BOJ] 백준 15596 정수 N개의 합 (0) | 2019.10.05 |