본문 바로가기
Python3/백준 알고리즘

2022.02.22 [백준] (python 파이썬) 별 찍기 - 11

by ian's coding 2022. 2. 22.
728x90
반응형

 

https://www.acmicpc.net/problem/2448

 

2448번: 별 찍기 - 11

첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수)

www.acmicpc.net


풀이

1. 우선 필요한 범위만큼 2차원 배열을 빈칸으로 채운다.(n이 24일때 높이는 24이지만 길이는 n*2이다)

2. star함수에 n이 3일 때, 더이상 분할할 수 없기 때문에 문제에서 주어진 삼각형을 그린다.

3. n이 3이상일 경우 가장위 별의 좌표로 부터 분할 될 삼각형의 위쪽 꼭지점 좌표로 재귀한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
n=int(input())
arr=[[' ']*(n*2for i in range(n)]
 
def star(n,x,y):
    if n==3:
        arr[x][y]='*'
        arr[x+1][y-1]=arr[x+1][y+1]='*'
        for i in range(-2,3):
            arr[x+2][y+i]='*'
        return
    else:
        a=n//2
        star(a,x,y)
        star(a,x+a,y+a)
        star(a,x+a,y-a)
 
star(n,0,n-1)
for i in arr:
    print(''.join(i))
 
cs

 

 

 

 

728x90
반응형

댓글