[백준 2447번][Python/파이썬] 별 찍기 - 10

공학도 Lee·2023년 2월 8일
0

백준 문제 풀이

목록 보기
22/63

1. 문제


출처: 백준 2447번 별 찍기 - 10

2. 풀이


주어진 크기만큼 True로 구성된 N×NN \times N 리스트를 먼저 만든다.

그리고, 규칙에 따라서 비어있게 될 부분을 False로 바꿔주면 된다.

9등분으로 쪼개고 가운데 부분은 비우는 규칙을 다시 한번 각 9등분에 적용하는데, 이를 가장 작은 크기가 될 때까지 반복한다. (크기가 1일 될 때까지 재귀적으로 적용한다.)

3. 소스코드


num = int(input())
stars=[[True]*num for _ in range(num)]

def star_del(x,y,n):
    if n==1:
        return stars
    else:
        for i in range(n//3):
            for j in range(n//3):
                stars[x+n//3+i][y+n//3+j]=False
        for i in range(3):
            for j in range(3):
                star_del(x+i*n//3,y+j*n//3,n//3)
        return stars
star_del(0,0,num)

for i in range(num):
    for j in range(num):
        if stars[i][j] == True:
            print("*",end='')
        else:
            print(" ",end='')
    print()

4. 그 외


처음에 해당 코드를 작성할 때에는, 일부분이 원하는 데로 그려지지 않아서 애를 먹었던 기억이 있다.

profile
이창민, Changmin Lee

0개의 댓글