[코딩테스트][백준] 🔥 백준 2448번 "별 찍기 - 11" 문제: Python으로 완벽 해결하기! 🔥

김상욱·2025년 1월 12일
post-thumbnail

문제 링크

https://www.acmicpc.net/problem/2448

🕒 Python 풀이시간: 40분

import sys
input=sys.stdin.readline

N=int(input())

stars=['  *  '," * * ","*****"]

def recur(k,starsNext):
    if k==N:
        for i in range(len(starsNext)):
            print(starsNext[i])
        return
    else:
        new_stars=[]
        for i in range(len(starsNext)):
            new_stars.append(" "*k+starsNext[i]+" "*k)
        for i in range(len(starsNext)):
            new_stars.append(starsNext[i]+" "+starsNext[i])
        recur(k*2,new_stars)

recur(3,stars)    

🔺 삼각형의 예술: 재귀로 그리는 아름다움 🔻

결과를 누적해가면서 재귀를 진행시키는게 가장 핵심이다. 즉 현재 삼각형은 다음 삼각형의 3개 중 하나가 되기 때문에 이를 이용하면 간단하다.

먼저 각 줄마다 삼각형의 띄어쓰기를 반영해야하므로 제일 작은 삼각형을 각 줄마다 리스트에 넣고 시작한다. 그렇게 만들어가다가 마지막 즉 우리가 원하는 값인 N에 도달하면 출력하면 된다. 그렇지 않은 경우, 이전 삼각형 3개로 현 삼각형을 만들어서 재귀로 다음 단계로 넘기면 된다. 이는 첫번째 삼각형에서 앞 뒤로 빈칸을 추가하고 나머지 두 개 삼각형(즉, 밑에 있는 두개)를 붙이면 된다.

이렇게 Python로 백준의 "별 찍기 - 11" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글