[백준] 2447번 - 별 찍기 - 10 (Python)

구미·2021년 5월 7일
0

알고리즘

목록 보기
3/25
def draw_star(n) :
    global Map
    
    if n == 3 :
        Map[0][:3] = Map[2][:3] = [1]*3
        # 첫 번째 행의 1~3열과 세 번째 행의 1~3열은
        # [1] (별이 있다는 뜻) 이 3개 들어간 형태
        # [1] * 3 을 해줄 경우 [1, 1, 1]의 행이 만들어짐!
        Map[1][:3] = [1, 0, 1]
        return

    a = n//3
    draw_star(n//3)
    for i in range(3) :
        for j in range(3) :
            if i == 1 and j == 1 :
                continue
            for k in range(a) :
                Map[a*i+k][a*j:a*(j+1)] = Map[k][:a] # 핵심 아이디어

N = int(input())      

# 메인 데이터 선언
Map = [[0 for i in range(N)] for i in range(N)]

draw_star(N)

for i in Map :
    for j in i :
        if j :
            print('*', end = '')
        else :
            print(' ', end = '')
    print()

재귀로 구현한 코드 중 가장 깔끔해보였다! 2차원 배열에 담는다는 아이디어를 생각하지 못했었는데 나중에 다시 보려고 일단 기록해둔다.



문제 출처
https://www.acmicpc.net/problem/2447

참고
https://study-all-night.tistory.com/5

profile
디지털 노마드를 꿈꾸며! 🦄 🌈

0개의 댓글