오늘의 문제 : 별찍기
이상하게 별찍기 문제는 실버난이도도 어렵다. 나는 텍스트가 더 눈에 잘 들어오는 타입이다 보니 그림만 보면 규칙을 찾는데 한참 걸린다.. 꾸준히 푼다고 푸는데도 익숙해지지 않아 어렵다.
그림 문제를 보면 '재귀'로 풀어야겠단 건 알면서도, 규칙을 찾는데 오래 걸려 어렵다
다행히 이번 문제는 재귀를 사용하지 않고 각 구간의 크기를 구하면 풀 수 있는 문제였다.
import sys
n = int(input())
tmp = 1
for i in range(1, n+1) :
if n == 1 :
print("*")
break
if i == 1 :
print("* " * (i-1) + "*" * ((n*4) - ((i*4) - 1)))
elif i < 3 :
print("* " * (i-1) + "*" * ((n*4) - ((i*4) - 3)))
else :
print("* " * (i-1) + "*" * ((n*4) - ((i*4) - 3)) + " *" * tmp)
tmp += 1
if i == 1 :
print("*")
elif i == n :
print("*" + " *" * ((n*2) - 2))
else :
print("* " * i + " " * (((n-i) * 4) - 1) + " *" * (i-1))
if n != 1 :
print("*" + " *" * ((n*2) - 2))
for j in range(n-1, 0, -1) :
print("* " * j + " " * (((n-j) * 4) - 3) + " *" * j)
print("* " * (j-1) + "*" * (((n-j) * 4) + 1) + " *" * (j-1))
이렇게 깔끔하게도 풀 수 있구나
n = int(input())
print("*"*(4*n-3))
for i in range(n-1):
print(("* "*(i+1)+" "*(4*n-4*i-5)+" *"*i).strip())
print("* "*(i+1)+"*"*(4*n-4*i-5)+" *"*i)
if n != 1:
print("* "*(2*n-1))
print("* "*(2*n-1))
for i in range(n-1):
print("* "*(n-1-i)+" "*(4*i+1)+" *"*(n-1-i))
print("* "*(n-2-i)+"*"*(4*i+5)+" *"*(n-2-i))
이런 유용한 정보를 나눠주셔서 감사합니다.