문제풀이/구현

[Python/파이썬] 백준 10994번 별 찍기 - 19

딜레이레이 2023. 4. 19. 23:40
 

10994번: 별 찍기 - 19

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

www.acmicpc.net

 

문제

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


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 차례대로 별을 출력한다.


코드

# i번째 사각형 한 변 길이 : 4(i-1)+1
n = int(input())

length = 4*(n-1)+1
stars = [[' '] * length for _ in range(length)]

def draw(num):
    if num == 1:
        stars[length//2][length//2] = "*"
        return
    # 한 변의 길이
    l = 4 * (num-1) + 1
    gap = (n-num)*2
    # 맨윗줄, 맨아랫줄
    for i in range(l):
        stars[length//2-l//2][gap+i] = '*'
        stars[length//2+l//2][gap+i] = '*'
    # 양옆        
    for i in range(l):
        stars[gap+i][gap] = "*"
        stars[gap+i][length-gap-1] = "*"
    return draw(num-1)

draw(n)
        
for i in range(length):
    for j in range(length):
        print(stars[i][j], end='')
    print()