Algorithm/백준

[백준/Python] 별 찍기 - 10

poppy 2021. 8. 14. 13:34
반응형

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

 

2447번: 별 찍기 - 10

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

www.acmicpc.net

이 문제는 이해하는게 어려웠던 문제였다. 이해하는데 시간이 좀 걸렸다. 이 문제를 푸는데는 여러 가지 방법이 있는데 나는 상중하로 구간을 나눠서 별을 찍는 방식을 선택했다. 구간을 상중하로 나누어 재귀함수를 통해 구해진 별을 붙여 나간다. 코드가 직관적이어서 이해하기 좀 더 쉬웠던 것 같다. print(L) 을 해보면 어떻게 재귀함수가 돌아가는지 이해하는데 도움이 될 것이다.

 

[출처] - https://cotak.tistory.com/38

num = int(input())

def star(n):
	if n == 1: return ['*'] 
		
	stars = star(n//3) 
	L = [] # 별을 출력할 리스트
	
	for s in stars: L.append(s*3) # 상 구간
	for s in stars: L.append(s+' '*(n//3)+s) # 중 구간
	for s in stars: L.append(s*3) # 하 구간
		
	return L

print('\n'.join(star(num)))
반응형

'Algorithm > 백준' 카테고리의 다른 글

[백준/Python] 덩치  (0) 2021.08.24
[백준/Python] 하노이 탑 이동 순서  (0) 2021.08.14
[백준/Python] 특정 거리의 도시 찾기  (0) 2021.07.24
[백준/Python] 플로이드  (0) 2021.07.04
[백준/Python] 럭키 스트레이트  (0) 2021.05.14