파이썬 알고리즘 문제 풀이

Baekjoon Online Judge 2447번 파이썬. 분할 정복.

gogi masidda 2023. 1. 18. 17:16

문제 링크
https://www.acmicpc.net/problem/2447

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net

빨간 부분을 상, 주황 부분을 중, 노란 부분을 하로 생각해서 3구간으로 나누어 풀었다.

정답 코드

import sys

N = int(sys.stdin.readline())

def dnc(N):
  if N == 1:
    return ["*"]

  divide = dnc(N//3)
  stars = []
  for d in divide: #상
    stars.append(d*3)
  for d in divide: #중
    stars.append(d+" "*(N//3)+d)
  for d in divide: #하
    stars.append(d*3)

  return stars
  
print("\n".join(dnc(N)))
728x90