https://www.acmicpc.net/problem/2448
2448번: 별 찍기 - 11
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수)
www.acmicpc.net
호기롭게 고른 골드4짜리 문제...
...어려웠다..
힌트보고 똥꼬쇼하고 겨우겨우 풀었다...
좌표 이거 직접 그려서 일일히 적어봐야 규칙이 보일랑말랑했다..
지능낮아서 힘들다..
풀이
일단 별을 그려넣을 큰 배열을 만든다.
재귀함수 인자로 n, x좌표, y좌표를 받는다..
star(n//2, x, y)
star(n//2, x+n//2, y- n//2)
star(n//2, x+n//2, y + n//2)
이부분은 직접 좌표그려서 계산했다..
그리고 n=3이되면 작은 삼각형그려서 마무링....
마지막으로 배열 전체 출력끝.
def star(n, x, y):
if(n == 3):
arr[x][y] = '*'
arr[x+1][y-1] = '*'
arr[x+1][y+1] = '*'
arr[x+2][y-2] = '*'
arr[x+2][y-1] = '*'
arr[x+2][y] = '*'
arr[x+2][y+1] = '*'
arr[x+2][y+2] = '*'
return
else:
star(n//2, x, y)
star(n//2, x+n//2, y- n//2)
star(n//2, x+n//2, y + n//2)
n = int(input())
arr = [[' ']*(2*n-1) for i in range(n)]
star(n, 0, n-1)
for i in arr:
print(''.join(i))
'PS > 재귀' 카테고리의 다른 글
[백준] 1991번: 트리순회 파이썬 (3) | 2024.02.28 |
---|---|
[백준] 1992번: 쿼드트리 파이썬 (0) | 2024.02.28 |
[백준] 1780번: 종이의 개수 파이썬 (0) | 2024.02.28 |
[백준] 2630번: 색종이 만들기 파이썬 (0) | 2024.02.27 |