What I Learned/Algorithm Practice
[백준 - python] 2447번: 별 찍기 - 10
Interrobang
2022. 10. 6. 13:18
<문제 링크>
2447번: 별 찍기 - 10
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이
www.acmicpc.net
<문제 풀이>
def draw(scale):
if scale == 3:
return ['***','* *','***']
star_unit = draw(scale // 3)
star_res = []
for star in star_unit: star_res.append(star * 3)
for star in star_unit: star_res.append(star + ' ' * (scale//3) + star)
for star in star_unit: star_res.append(star * 3)
return star_res
N = int(input())
print('\n'.join(draw(N)))
*key point: 같은 규칙(3번 출력, 1번 출력 + 공백 + 1번 출력, 3번 출력)이 반복되면서 그림이 그려지도록 재귀함수를 사용한다. 리스트 형태로 저장되므로 join 함수를 이용하여 줄바꿈과 함께 이어서 출력되도록 한다.