위 문제는 재귀적인 패턴으로 별을 찍어보는 문제이다.
문제의 특징을 정리해보자면,
1. 3의 거듭제곱의 수가 입력된다 (이때 지수는 1<=k<8)
2. 크기 N은 N*N의 정사각형 모양을 지닌다
3. 크기 3의 패턴은 가운데에 공백이 있으며, 이를 제외한 칸에 별이 있는 형태이다.
3-1. 크기 N은 가운데가 공백인 (N/3)*(N/3) 정사각형을 N/3의 패턴으로 나타낸 것임.
문제 조건을 잘 읽어보면,
1. 크기가 N이라면 그 전단계인 N/3인 정사각형을 이용하여 배열하게 됨
2. 따라서, 크기를 나타내는 int값 한개, 전 단계의 배열을 지닌 list 한개, 총 2개의 파라미터를 받는 재귀함수를 제작
이런 해결방법을 떠올릴 수 있다.
이를 바탕으로 코드를 작성해보면,
def star(n: int, x: list)-> list:
out = [] # 한번 처리한 값
if n == 3:
return x
else:
for i in x: # 위에 처음 3개의 구역
out.append(i*3)
for i in x: # 가운데 3개의 구역 (중앙 비어있음)
out.append(i+' '*len(x)+i)
for i in x: # 마지막 3개의 구역
out.append(i*3)
return star(n//3, out)
if __name__ == "__main__":
n = int(input())
first = ['***', '* *', '***']
final = star(n, first)
for i in final:
print(i)
이런 코드가 나온다.
예를 들어 81 입력시,
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
* * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * *
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
********* ****************** ****************** *********
* ** ** * * ** ** ** ** ** * * ** ** ** ** ** * * ** ** *
********* ****************** ****************** *********
*** *** *** ****** *** *** ****** *** *** ***
* * * * * * * ** * * * * * * ** * * * * * * *
*** *** *** ****** *** *** ****** *** *** ***
********* ****************** ****************** *********
* ** ** * * ** ** ** ** ** * * ** ** ** ** ** * * ** ** *
********* ****************** ****************** *********
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
* * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * *
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
*************************** ***************************
* ** ** ** ** ** ** ** ** * * ** ** ** ** ** ** ** ** *
*************************** ***************************
*** ****** ****** *** *** ****** ****** ***
* * * ** * * ** * * * * * * ** * * ** * * *
*** ****** ****** *** *** ****** ****** ***
*************************** ***************************
* ** ** ** ** ** ** ** ** * * ** ** ** ** ** ** ** ** *
*************************** ***************************
********* ********* ********* *********
* ** ** * * ** ** * * ** ** * * ** ** *
********* ********* ********* *********
*** *** *** *** *** *** *** ***
* * * * * * * * * * * * * * * *
*** *** *** *** *** *** *** ***
********* ********* ********* *********
* ** ** * * ** ** * * ** ** * * ** ** *
********* ********* ********* *********
*************************** ***************************
* ** ** ** ** ** ** ** ** * * ** ** ** ** ** ** ** ** *
*************************** ***************************
*** ****** ****** *** *** ****** ****** ***
* * * ** * * ** * * * * * * ** * * ** * * *
*** ****** ****** *** *** ****** ****** ***
*************************** ***************************
* ** ** ** ** ** ** ** ** * * ** ** ** ** ** ** ** ** *
*************************** ***************************
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
* * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * *
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
********* ****************** ****************** *********
* ** ** * * ** ** ** ** ** * * ** ** ** ** ** * * ** ** *
********* ****************** ****************** *********
*** *** *** ****** *** *** ****** *** *** ***
* * * * * * * ** * * * * * * ** * * * * * * *
*** *** *** ****** *** *** ****** *** *** ***
********* ****************** ****************** *********
* ** ** * * ** ** ** ** ** * * ** ** ** ** ** * * ** ** *
********* ****************** ****************** *********
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
* * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * ** * * *
*** ****** ****** ****** ****** ****** ****** ****** ****** ***
*********************************************************************************
* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
*********************************************************************************
이런 출력이 나오게 된다.
'백준' 카테고리의 다른 글
[백준]10989. 수 정렬하기 3(카운팅 정렬) (0) | 2021.03.03 |
---|---|
[백준]1436. 영화감독 숌 문제풀이 (파이썬, python) (0) | 2021.02.17 |
[백준]7568. 덩치 문제풀이 (파이썬, python) (0) | 2021.02.17 |
[백준]11729. 하노이 탑 이동 순서 문제풀이 (파이썬, python) (0) | 2021.02.14 |
백준 문제풀이 정리 항목 (0) | 2021.02.14 |
댓글