본문 바로가기

알고리즘!

백준 2447번 - 별 찍기 -10

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 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