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

Jungyu Jin·2022년 1월 10일
0

BackJoon

목록 보기
9/16

문제 설명

풀이 전략

입력이 3의 배수로 주어지고, 문제에서 나온 것 처럼 (N/3)×(N/3)(N/3)\times(N/3) 크기의 공백을 N/3 크기의 패턴이 둘러 싼 모양을 출력해야 한다. 가장 작은 N=3의 패턴부터 채워 재귀적으로 패턴을 채워나가는 것이 중요 포인트이다. 별 맵을 만드는 재귀 함수에서 좌상단 부터 (N/3) 크기의 패턴을 N 크기의 부분에 채우면 해결할 수 있다. 출력시에는 만들어진 맵을 모두 돌며 별 혹은 공백을 출력하면 된다.

코드


def makestarmap(starmap,n):
    if n == 3:
        starmap[0] = starmap[2] = [True,True,True]
        starmap[1] = [True,False,True]
        return
    a = n //3
    makestarmap(starmap,a)
    for i in range(3):
        for j in range(3):
            if i == 1 and j == 1:
                continue
            for k in range(a):
                starmap[a*i+k][a*j:a*(j+1)] = starmap[k][:a]

n = int(input())
starmap=[]
for _ in range(n):
    starmap.append([False]*n)
makestarmap(starmap,n)
for row in starmap:
    for element in row:
        if element:
            print('*',end='')
        else:
            print(' ',end='')
    print()

0개의 댓글

관련 채용 정보