파게로그

[백준 2447번] 별 찍기 10 본문

콤퓨타 왕왕기초/PS

[백준 2447번] 별 찍기 10

파게 2020. 11. 2. 02:34

문제 링크: 2447번 별 찍기 10

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

 

재귀는 어렵다. 하지만 피할 수 없기에 즐겨야(?) 한다. 프랙탈이 모니터를 채울 때의 그 쾌감을...!

배열을 사용하면 '비교적' 쉽게 해결할 수 있는 문제이다. 다른 풀이를 보니까, 엄청 큰 2차원 배열을 미리 선언해놓고 인덱스를 통해 채워나가는 풀이도 있다.

 

def paint(n):
	if n==1:
		return ['*']

	arr = [0 for i in range(n)]
	prev = n//3
	prevArr = paint(prev)

	idx = 0
	for i in range(3):
		for j in range(prev):
			if i == 1:
				arr[idx] = prevArr[j]+' '*prev+prevArr[j]
			else:
				arr[idx] = prevArr[j]*3
			idx += 1
  
	return arr

n = int(input())
res = paint(n)
for i in range(n):
	print(res[i])
Comments