-
[BOJ 2447, Python 3] 별찍기 - 10알고리즘/BOJ 2021. 9. 21. 13:12반응형
https://www.acmicpc.net/problem/2447
풀이
예제를 보면 $3^n \times 3^n$으로 된 정사각형에서 가운데가 텅 비어있고, $3^{n-1} \times 3^{n-1}$이 텅 비어있고, .... 이렇게 모든 정사각형에서 가운데가 텅 비어있는 정사각형을 그리는 것이 목표입니다.
그래서 분할정복을 사용하여 가운데를 공백으로 만들어주고 -> 이전 정사각형보다 세 배 작은 정사각형들의 가운데를 공백으로 만들어주고 -> 이전 정사각형보다 세 배 작은 정사각형들의 가운데를 공백으로 만들어주고... 이것을 정사각형의 길이가 3이 될 때까지 반복해주시면 됩니다.
코드
12345678910111213141516171819def go(last_x, last_y, length, fill):if fill:for x in range(last_x - length, last_x):for y in range(last_y - length, last_y):arr[x][y] = ' 'returnnext_len = length//3if length >= 3:for i in range(3):for j in range(3):nx = last_x - next_len * iny = last_y - next_len * jgo(nx, ny, next_len, 1 if i == j == 1 else 0)n = int(input())arr = [['*'] * n for _ in range(n)]go(n, n, n, 0)for i in range(n):print(''.join(arr[i]))cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 23030, Python 3] 후다다닥을 이겨 츄르를 받자! (0) 2021.09.24 [BOJ 23061, Python 3] 백남이의 여행 준비 (4) 2021.09.23 [BOJ 5719, Python 3] 거의 최단 경로 (0) 2021.09.17 [BOJ 16282, Python 3] Black Chain (0) 2021.09.16 [BOJ 6549, Python 3] 히스토그램에서 가장 큰 정사각형 (0) 2021.09.15