백준 파이썬 2447: 별찍기 - 10
2021. 11. 1. 17:18ㆍ컴퓨터 사이언스/Algorithm
반응형
문제의 핵심 알고리즘 = 재귀함수
도움을 받은 블로그 = https://yeol2.tistory.com/38
별 찍기 - 10
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
1 초 | 256 MB | 37799 | 19554 | 14436 | 51.685% |
문제
재귀적인 패턴으로 별을 찍어 보자. 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
*************************** * ** ** ** ** ** ** ** ** * *************************** *** ****** ****** *** * * * ** * * ** * * * *** ****** ****** *** *************************** * ** ** ** ** ** ** ** ** * *************************** ********* ********* * ** ** * * ** ** * ********* ********* *** *** *** *** * * * * * * * * *** *** *** *** ********* ********* * ** ** * * ** ** * ********* ********* *************************** * ** ** ** ** ** ** ** ** * *************************** *** ****** ****** *** * * * ** * * ** * * * *** ****** ****** *** *************************** * ** ** ** ** ** ** ** ** * *************************** |
코드
# 별들을 만들 함수
def get_stars(n):
# 별들을 담을 리스트
Temp = []
#
for i in range(3 * len(n)):
# n(즉 len(stars))이 3으로 나누어 떨어지지 않는다면(1이 남는다면) 가운데 공백을 줌(n의 길이 만큼)
if i // len(n) == 1:
Temp.append(n[i % len(n)] + " " * len(n) + n[i % len(n)])
# n이 3으로 나누어 떨어진다면, 공백 없이 가득 채움
else:
Temp.append(n[i % len(n)] * 3)
return Temp
stars = ["***", "* *", "***"]
n = int(input())
k = 0
# 만약 n이 3이 될 때 까지 n은 3으로 나눠준 값을 다시 n값으로 지정하고 k 1씩 추가
while n != 3:
n = int(n / 3)
# k는 함수를 몇번 실행할지 정하는 변수
k += 1
for i in range(k):
stars = get_stars(stars)
for i in stars:
print(i)
반응형
반응형
'컴퓨터 사이언스 > Algorithm' 카테고리의 다른 글
동백 // 백준 파이썬 2750번: 수 정렬하기 (0) | 2022.01.10 |
---|---|
동백 // 백준 파이썬 2750번: 수 정렬하기 (0) | 2022.01.10 |
동백 // 백준 파이썬 1436번 영화감독 숌 (0) | 2021.11.01 |
동백 // 백준 파이썬 7568번 덩치 (0) | 2021.11.01 |
동백 // 백준 파이썬 1371번 가장 많은 글자 (0) | 2021.11.01 |