본문 바로가기
백준알고리즘/재귀

(Python/🥈1)백준 알고리즘 2447번: 별 찍기 - 10

by windy7271 2022. 5. 19.
728x90
반응형

문제 출처:https://www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

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

www.acmicpc.net

풀이:

def stars(n):
    array = []
    for i in range(3*len(n)):
        if i//len(n) ==1:                    						    # 몫이 1일때 가운데 3*3 부분
            array.append(n[i%len(n)] + " " * len(n) + n[i%len(n)]) 		# i 2일때
        else:                                  							# 나머지가 1일때
            array.append(n[i%len(n)] * 3 )
    return(list(array))

star = ["***","* *","***"]				# 별 초기화
n = int(input())

k = 0									# 반복횟수
while n != 3:
    n = int(n/3)
    k += 1								

for i in range(k):					    # 반복횟수만큼 
    star = stars(star)					# 리스트를 만들어서
for i in star:
    print(i)							리스트안 출력

진짜 너무 어려운 문제다. 그냥 재귀 부분 자체가 너무 어렵다.

 

내가 찾은 규칙은 밑에 그림과 같다.

 

 

가운데가 비어있는 8개 별로 이루어져 있는 모양이 모여서 다시 가운데가 비어있는 패턴이 만들어지는데

이러한 구조를 프랙탈이라고 한다

반응형

댓글