TIL

Algorithm TIL 241109

wnwlals13 2024. 11. 9. 23:58

백준 2447 별찍기 - 10

 

 

문제 접근

***

*  *

***

 

모양의 별찍기를 하는 데 다만 반복문의 조건이 까다롭다고 생각했다. 하지만 조건이 까다로워서 어려웠다. 

우선 별을 찍는데 i와 j가 1인 위치에는 공백으로 출력되어야 했다. 이 조건을 생각하기 어려웠다.

 

코드

import sys
input = sys.stdin.readline

n = int(input())

arr = [[' ' for _ in range(n)] for _ in range(n)]

def func(x,y,n) :
    if n == 1 : 
        arr[x][y] = "*"
        return
    
    new_n  = n // 3
    for i in range(3) :
        for j in range(3) :
            if i % 3 != 1 or j % 3 != 1 : 
                
                func(x+i*new_n, y+j*new_n, new_n)
func(0,0,n)

# 결과 출력
for row in arr:
    print(''.join(row))

 

 

느낀점

별찍기라도 쉬운 게 아니다.. 조건 분기를 생각하고 반복문을 생각했을 때 재귀로 푸는 방법이 더 쉽다.