[알고리즘 문제풀이] 별 찍기-11

황인권·2023년 4월 27일
0

알고리즘 문제풀이

목록 보기
71/81

문제 제목 : 별 찍기-11

문제 난이도 : 하

문제 유형 : 재귀

https://www.acmicpc.net/problem/2448
시간 제한 : 1초
메모리 제한 : 256MB

문제풀이 아이디어

  • n = 3일때의 모양을 좌우로 두배로 복사해가며 늘려가는 모양이다.
  • 다음 모양은 좌표만을 계산하여 재귀적으로 그리면 된다.

< 소스코드 >

n = int(input())
graph = [[' '] * 2 * n for _ in range(n)]

def recursive(x, y, N):
    # n = 3일 때
    if N == 3:
        graph[x][y] = '*'
        graph[x + 1][y - 1] = graph[x + 1][y + 1] = '*'
        for i in range(-2, 3):
            graph[x + 2][y + i] = '*'
    # 맨 처음 그래프를 양옆으로 복사
    else:
        nextN = N // 2
        recursive(x, y, nextN)
        recursive(x + nextN, y - nextN, nextN)
        recursive(x + nextN, y + nextN, nextN)


recursive(0, n - 1, n)
for i in graph:
    print("".join(i))
profile
inkwon Hwang

0개의 댓글