728x90
문제 출처: https://www.acmicpc.net/problem/2447
문제
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다.
크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다.
***
* *
***
N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다.
입력
첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다.
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
예제 입력 1
27
예제 출력 1
***************************
* ** ** ** ** ** ** ** ** *
***************************
*** ****** ****** ***
* * * ** * * ** * * *
*** ****** ****** ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
********* *********
* ** ** * * ** ** *
********* *********
*** *** *** ***
* * * * * * * *
*** *** *** ***
********* *********
* ** ** * * ** ** *
********* *********
***************************
* ** ** ** ** ** ** ** ** *
***************************
*** ****** ****** ***
* * * ** * * ** * * *
*** ****** ****** ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
문제를 푸는 방법을 고민을 많이했네요
num = int(input())
def star(n):
if n == 1: return ['*']
stars = star(n//3)
arr = []
for s in stars: arr.append(s*3)
for s in stars: arr.append(s+' '*(n//3)+s)
for s in stars: arr.append(s*3)
return arr
print('\n'.join(star(num)))
재귀함수로 불러와서 append를 해주는 방식으로 진행을 하였습니다!
위 중간 아래 세가지로 나누어서 추가 후에 한번에 출력을 해줍니다.
728x90
'코딩 > 백준' 카테고리의 다른 글
[백준] 2798번 블랙잭 파이썬 풀이 코딩테스트 연습 브루트 포스 브론즈2 (0) | 2022.01.25 |
---|---|
[백준] 11729번 하노이 탑 이동 순서 파이썬 풀이 코딩테스트 연습 재귀 실버1 (0) | 2022.01.24 |
[백준] 10870번 피보나치 수 5 파이썬 풀이 코딩테스트 연습 재귀 브론즈2 (0) | 2022.01.23 |
[백준] 10872번 팩토리얼 파이썬 풀이 코딩테스트 연습 재귀 브론즈3 (0) | 2022.01.23 |
[백준] 1002번 터렛 파이썬 풀이 코딩테스트 연습 기본 수학2 브론즈3 (0) | 2022.01.21 |