문제
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다.
크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다.
***
* *
***
N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다.
https://www.acmicpc.net/problem/2447
2447번: 별 찍기 - 10
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이
www.acmicpc.net
import sys
N=int(sys.stdin.readline())
def print_stars(num):
if(num==1):
return ['*']
else:
Stars=print_stars(num//3)
L=[]
for star in Stars:
L.append(star*3)
for star in Stars:
L.append(star+' '*(num//3)+star)
for star in Stars:
L.append(star*3)
return L
result=print_stars(N)
print('\n'.join(result))
※ 재귀
재귀함수를 잘 활용해야 하는 문제이다.
● 매개변수가 1인 경우 * 가 하나 담겨있는 배열을 return 해준다.
● 매개변수가 1이 아닐 경우, 새로운 Stars 배열에 현재 매개변수 값을 3으로 나눈 값을 새로운 매개변수로 하는 함수를 재귀적으로 호출해준다.
● 새로운 배열 L에 조건에 맞게 Stars배열에 담긴 요소들을 알맞게 append 해준다.
*참고: join 함수
https://blockdmask.tistory.com/468
[python] 파이썬 join 함수 정리 및 예제 (문자열 합치기)
안녕하세요. BlockDMask입니다. 오늘은 파이썬에서 리스트를 문자열로 일정하게 합쳐주는 join 함수에 대해서 알아보려고 합니다. join 함수는 문자열을 다룰 때 유용하게 사용할 수 있는 함수이니
blockdmask.tistory.com
'백준(baekjoon) > 골드' 카테고리의 다른 글
백준(baekjoon) 9251번: LCS(골드 5, 파이썬 PYTHON) - 동적 계획법 1 (0) | 2022.10.06 |
---|---|
백준(baekjoon) 2565번: 전깃줄(골드 5, 파이썬 PYTHON) - 동적 계획법 1 (2) | 2022.10.04 |
백준(baekjoon) 11054번: 가장 긴 바이토닉 부분 수열(골드 4, 파이썬 PYTHON) (0) | 2022.10.01 |
백준(baekjoon) 2580번: 스도쿠(골드 4, 파이썬 PYTHON) - 백트래킹 (0) | 2022.09.16 |
백준(baekjoon) 9663번: N-Queen(골드 4, 파이썬 PYTHON) - 백트래킹 (0) | 2022.09.15 |