백준 2447 - 별 찍기 - 10 (파이썬)

Updated:

Answer

def get_stars(n):
    if n == 1:
        return ['*']
        
    star_small = get_stars(n // 3)
    star_large = []
    
    for s in star_small:
        star_large.append(s * 3)
    for s in star_small:
        star_large.append(s + ' ' * (n // 3) + s)
    for s in star_small:
        star_large.append(s * 3)
        
    return star_large

n = int(input())
print('\n'.join(get_stars(n)))

Answer2

def draw_star(n) :
    global Map
    
    if n == 3 :
        Map[0][:3] = Map[2][:3] = [1]*3
        Map[1][:3] = [1, 0, 1]
        return

    a = n//3
    draw_star(n//3)
    for i in range(3) :
        for j in range(3) :
            if i == 1 and j == 1 :
                continue
            for k in range(a) :
                Map[a*i+k][a*j:a*(j+1)] = Map[k][:a]

N = int(input())      

Map = [[0 for i in range(N)] for i in range(N)]

draw_star(N)

for i in Map :
    for j in i :
        if j :
            print('*', end = '')
        else :
            print(' ', end = '')
    print()

Categories:

Updated: