Algorithm & Data Structure/Baekjoon
[Baekjoon/python] 별 찍기 - 11 #2448
ju_young
2023. 6. 21. 09:47
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
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
코드
- 굳이 번거롭게 만든 재귀 문제
- 8개 별을 가지는 삼각형을 기준으로 수행
import sys
input = sys.stdin.readline
n = int(input())
graph = [[' '] * 2 * n for _ in range(n)]
def recursive(row, col, N):
if N == 3:
graph[row][col] = '*'
graph[row + 1][col - 1] = graph[row + 1][col + 1] = '*'
for i in range(-2, 3):
graph[row + 2][col + i] = '*'
else:
nextN = N // 2
recursive(row, col, nextN) # 현재 위치의 삼각형과 양쪽 아래에 삼각형 생성
recursive(row + nextN, col - nextN, nextN) # left-lower 삼각형과 양쪽 아래에 삼각형 생성
recursive(row + nextN, col + nextN, nextN) # right-lower 삼각형과 양쪽 아래에 삼각형 생성
recursive(0, n - 1, n)
for i in graph:
print("".join(i))
# *
# * *
# *****
# * *
# * * * *
# ***** *****
# * *
# * * * *
# ***** *****
# * * * *
# * * * * * * * *
# ***** ***** ***** *****
# * *
# * * * *
# ***** *****
# * * * *
# * * * * * * * *
# ***** ***** ***** *****
# * * * *
# * * * * * * * *
# ***** ***** ***** *****
# * * * * * * * *
# * * * * * * * * * * * * * * * *
#***** ***** ***** ***** ***** ***** ***** *****
728x90