[Baekjoon] 30678. 별 안에 별 안에 별 찍기
패턴에 따라 별을 찍는 문제다.
아래는 양의 정수 에 대해 Star의 패턴이다.
*
* * ***** *** * *
* * ***** *** * * * * ***** *** * * * * * * * * * * * * ************************* *** *** *** *** *** * * * * * * * * * * * * * * * * *************** *** *** *** * * * * * * * * * * ***** ***** *** *** * * * *
import sys
read = sys.stdin.readline
pattern = [
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[1, 1, 1, 1, 1],
[0, 1, 1, 1, 0],
[0, 1, 0, 1, 0]
]
def is_star(x, y, pattern_length):
nx = (x // pattern_length) % 5
ny = (y // pattern_length) % 5
if pattern_length == 1:
return pattern[ny][nx] == 1
if pattern[ny][nx]:
return is_star(x, y, pattern_length // 5)
return False
def print_star_pattern(n):
if n == 0:
print("*")
return
size = 5 ** n
for i in range(size):
for j in range(size):
print("*" if is_star(j, i, size // 5) else " ", end="")
print()
N = int(read())
print_star_pattern(N)
is_star
: 해당 칸에 별을 찍을지 판단하는 함수.False
반환.모든 칸에 대해 is_star
함수로 판단 후 출력.