공부/백준(C++) - 2022~

백준 2447번: 별 찍기-10 [C++]

상연 2022. 1. 23. 15:30

목차

    https://www.acmicpc.net/problem/2447

     

    2447번: 별 찍기 - 10

    재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

    www.acmicpc.net

    코드

    #include <iostream>
    using namespace std;
    
    char pattern[2187][2187];
    
    void init(int n)
    {
    	for(int i=0; i<n; i++)
    	{
    		for(int j=0; j<n; j++)
    		{
    			pattern[i][j] = ' ';
    		}
    	}
    }
    
    void show(int n)
    {
    	for(int i=0; i<n; i++)
    	{
    		for(int j=0; j<n; j++)
    		{
    			printf("%c", pattern[i][j]);
    		}
    		printf("\n");
    	}
    }
    
    void solve(int n, int i, int j)
    {
    	if(n == 3)
    	{
    		for(int x = i; x < i + 3; x++)
    		{
    			for(int y = j; y <j + 3; y++)
    			{
    				if(x == i + 1 && y == j + 1) continue;
    				else pattern[y][x] = '*';
    			}
    		}
    	}
    	
    	else
    	{
    		for(int x = i; x < i + n; x += (n / 3))
    		{
    			for(int y = j; y <j + n; y += (n / 3))
    			{
    				if(x == i + (n / 3) && y == j + (n / 3)) continue;
    				else solve(n / 3, x, y);
    			}
    		}
    		
    	}
    	
    }
    
    
    int main() {
    	int n;
    	cin >> n;
    	init(n);
    	solve(n, 0, 0);
    	show(n);
    	return 0;
    }

     

    설명

    풀다보면 그냥 오른쪽으로 짜서 걍 3의 8승까지의 경우의 수를 다 배치해서 준비해놓고

    출력시키는게 더 낫지 않나 싶다. 사실 그게 더 효율적이긴 할 거 같은데...

    굳이 재귀함수로 계산해서 출력하는거보다야 경우의수도 얼마 안되는데 그거 별 찍는데 얼마 걸린다고

    https://wonsang98.tistory.com/28?category=816114 

     

    2447번: 별 찍기 - 10(백준 C++)

    2447번: 별 찍기 - 10 링크 코드 #include using namespace std; char arr[2187][2187]; void init(){ for(int i=0; i > n; solve(n, 0, 0); for(int i=0; i 사견 재귀함수를 이용한 별 찍기 문제. 입력 우선 입..

    wonsang98.tistory.com

    옛날에 풀었던 문제인데, 설명을 작년의 내가 훨씬 더 잘해놨기 때문에 이걸 보는게 좋을거같다.

    진짜 작년의 나는 어떻게 이렇게 열심히 설명을 적어놨지?

    하루에 한 문제만 풀고 설명을 올려서 그런가보다... 지금은 재활치료중이라 하루에 되는대로 일단 풀어놓고 코드만 올리는 식이라 이렇게 상세하게 설명을 올릴 시간적 여유가 부족하다.

    작년민수야! 고맙다!

    '공부 > 백준(C++) - 2022~' 카테고리의 다른 글

    백준 2798번: 블랙잭 [C++]  (0) 2022.01.25
    백준 1002번: 터렛 [C++]  (0) 2022.01.23
    백준 10870번: 피보나치 수 5 [C++]  (0) 2022.01.23
    백준 10872번: 팩토리얼 [C++]  (0) 2022.01.23
    백준 1002번: 터렛 [C++]  (0) 2022.01.22