본문 바로가기
Problem Solving/Recursion

[재귀 / 파이썬] 백준 10993번 : 별 찍기 -18 / 골드 4

by ggyongi 2022. 3. 7.
반응형

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

 

10993번: 별 찍기 - 18

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

www.acmicpc.net

n = int(input())

def star(depth):
    if depth == 1:
        return ['*']

    m = 2**(depth+1)-3
    table = [[' ' for _ in range(m)] for _ in range(m)]

    k = 2**depth-3
    shift = 2**(depth-1)

    if depth % 2 == 0:
        for i in range(m):
            table[0][i] = '*'

        j = 0
        for i in range(0, m, 2):
            table[i][j] = '*'
            j += 1

        j -= 1
        for i in range(-1, -m, -2):
            table[i][j] = '*'
            j += 1

        a = star(depth - 1)
        for i in range(k):
            for j in range(k):
                table[2+i][j+shift] = a[i][j]

    else:
        for i in range(m):
            table[-1][i] = '*'

        j = 0
        for i in range(-1, -m, -2):
            table[i][j] = '*'
            j += 1

        for i in range(0, m, 2):
            table[i][j] = '*'
            j += 1

        a = star(depth - 1)
        for i in range(k):
            for j in range(k):
                table[i+k+1][j+shift] = a[i][j]

    return table

result = star(n)
for i in range(2**(n+1)-3):
    a = "".join(result[i]).rstrip()
    if a:
        print(a)

재귀 연습!

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글