[Python] 2447번
프랙탈처럼 어떤 세분화된 소 문제로 쪼갤수 있다면 분할정복 알고리즘을 사용해야한다.
분할정복법 (Devide & Conquer)
큰문제를 작은문제로 분할해 재귀적으로 해결
시간복잡도 : O(n) 이다.
import sys
N = int(sys.stdin.readline())
star=["***","* *","***"]
def stars(N):
new_star=[]
for i in range(3 * len(N)):
if i // len(N) == 1:
new_star.append(N[i % len(N)] + " " * len(N) + N[i % len(N)])
else:
new_star.append(N[i % len(N)] * 3)
return(list(new_star))
K=0
while N!=1:
N = N//3
K= K+1
for i in range(K):
star = stars(star)
for i in star:
print(i)
코드를 입력하세요
출력함수의 경우 시간복잡도가 크다 !
global : 함수 밖에 선언한 친구들을 수정할 때는 전역변수를 써줘야 한다.
Author And Source
이 문제에 관하여([Python] 2447번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rkdud007/Python-2447번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)