Python - [백준]2448-별찍기 11

Paek·2023년 2월 19일
0

코테공부

목록 보기
33/44

출처

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

문제


별의 패턴을 유추하여 별찍기를 하는 문제이다.
입력은 3 * (2^n)의 형태로 주어진다.

접근 방법

별 찍기의 패턴을 보면, 행은 N개로 이루어져 있고 열은 2*n-1개로 이루어져 있다. 그리고 3의 배수로 이루어져 있다.


위와 같은 과정으로 재귀호출을 3번씩 수행하며 n==3일때 별을 그리도록 하여 해결하였다.
별을 바로 프린트 하는게 아닌, 배열을 선언하여 저장하는 방식으로 그리고 마지막에 최종으로 프린트 하도록 구현하였다.

풀이

import sys
input = sys.stdin.readline
n = int(input())
arr = [[" "]* (2*n-1) for _ in range(n)]

def recursive(x, y, n):
    if n == 3:
        arr[x][y] = "*"
        arr[x+1][y-1] = arr[x+1][y+1] = "*"
        for i in range(5):
            arr[x+2][y-2 + i] = "*"
        return
    next_n = n//2
    recursive(x, y, next_n)
    recursive(x + next_n, y - (next_n), next_n)
    recursive(x + next_n, y + (next_n), next_n)

recursive(0, (2*n-1)//2, n)

for i in range(n):
    print("".join(arr[i]))
profile
티스토리로 이전했습니다. https://100cblog.tistory.com/

0개의 댓글