본문 바로가기

카테고리 없음

[백준 2448번] 별 찍기 - 11 (Python3)

import sys
input = sys.stdin.readline
from collections import deque

N = int(input())

star = [[" "]*N*2 for i in range(N)]

def Triangle(y,x,n):
  if n == 3:
    star[y][x+2] = "*"
    star[y+1][x+1] = star[y+1][x+3] = "*"
    for i in range(5):
      star[y+2][x+i] = "*"
  else:
    Triangle(y,x+n//2,n//2)
    Triangle(y+n//2,x,n//2)
    Triangle(y+n//2,x+n,n//2)

Triangle(0,0,N)

for i in star:
  print("".join(i))

처음에는 함수 자체에 print를 이용한 코드를 짜서 문제를 풀려고 시도해 보았는데, 내가 아이디어가 부족한건지 잘 풀리지 않았다. 그래서 list를 먼저 만든 다음 모양을 만들어 주고 join함수를 이용하는 방법을 시도하였더니 쉽게 풀렸다.

 

 

오늘의 교훈) 데이터가 너무 방대해서 메모리가 부족한게 아니라면 괜히 깝치지 말고 2차원 배열을 쓰자