온라인저지

[BOJ] 2447번: 별찍기 - 10

plzfday 2018. 5. 15. 00:44

2447번: 별찍기 - 10

풀이

규칙성을 찾는 수 밖에 없는데 대개 한 칸 빈칸은 쉽게 찾을 수 있을텐데 큰 빈칸을 찾는 게 어려울 수 있다.
이것은 표를 그려보면 쉽게 알 수 있는데 n=9일 때를 그려보면 '나누기 3의 몫’이 1인 구간만 빈칸인 것을 알 수 있다.

코드

#include <cstdio>
int n;
int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            int dx = i, dy = j;
            while (dx)
            {
                if (dx % 3 == 1 && dy % 3 == 1)
                    break;
                dx /= 3, dy /= 3;
            }
            putchar(dx ? ' ' : '*');
        }
        puts("");
    }
    return 0;
}