본문 바로가기
Algorithm/알고리즘 문제풀이

백준 2447 파이썬 - 별 찍기 10

by devraphy 2021. 8. 17.

1. 문제 링크

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

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net


2. 나는 어떻게 생각했는가? 

- 문제는 이해했지만, 풀이가 잘 이해가 안간다.

- 수학적 사고력이 많이 부족하다는 것을 느끼게하는 문제

- 지금 당장 이해가 안가는 문제를 붙잡고 있으려니, 시간이 아깝다고 생각해서 패스한다. 

 


3. 정답 코드

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()

# 출처 - https://study-all-night.tistory.com/5

댓글