문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N이 주어진다. N은 항상 3의 제곱꼴인 수이다. (3, 9, 27, ...) (N=3k, 1 ≤ k < 8)
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include <numeric>
#include<math.h>
using namespace std;
void star(int x,int y) {
if (x==0 || y==0) {
printf("*");
return;
}
if (x % 3 == 1 && y % 3 == 1)
printf(" ");
else
star(x/3,y/3);
}
int main() {
int i, j,N;
cin >> N;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
star(i,j);
}
puts("");
}
}
엄청 어려웠다. 몇일간 이문제를 풀기 위해 고생을 엄청한 것 같다.
핵심 아이디어는 기초적인 공백이 들어가는 부분은 %3을 했을때 1인 부분이고 가운대의 큰 공백부분도 역시 3으로 계속 해서 나눈 몫을 %3했을때 1이 된다.
'알고리즘!' 카테고리의 다른 글
백준 1712번-손익분기점 (0) | 2019.07.31 |
---|---|
백준 1157번- 단어공부 (0) | 2019.07.24 |
백준 1074번-Z (0) | 2019.07.11 |
백준 11729번-하노이 탑 이동 순서 (0) | 2019.07.09 |
백준 1436번- 영화감독 숌 (0) | 2019.07.08 |