언어는 과-학인가요?/python 파이썬
백준 골드 (2448번) 파이썬 - 별찍기
이원자 탄소
2022. 7. 28. 00:01
728x90
import math
n=int(input())
def star(k):
a=int(k/3)
if k==6:
return [' * ',' * * ','*****']
arr=star(k//2)
stars=[]
for i in arr:
stars.append(' '*(3*(2**((int(math.log2(a)))-2)))+i+' '*(3*(2**((int(math.log2(a)))-2))))
for i in arr:
stars.append(i+' '+i)
return stars
print("\n".join(star(n*2)))
후 마지막에 저 수식을 어케짤까 하다가 도저히 로그 쓰는거 말고는 생각이 안나서 math를 import해버렸다...
더 효율적인지 아닌지는 모르겠지만 일단 돌아는 감.
2447번 코드에서 살짝 수정만 한것.
일단 알고리즘은 평범한 재귀함수임.
어떤 함수냐면 일단 기본 베이스가 되는 삼각형을 만들고, 그 삼각형으로 프랙탈마냥 계속 만들어내는거
근데 만드는 과정에서 좀 수학적인게 필요했음 (수1 수열에 해당하는 부분인듯)
코드는 뭐 12넣어보고 24넣어보고 그러다보면 이해 가능할거고
중간에 몇번 에러떴는데 이유:
1. 공백 수를 정하는 코드를 짜야하는데, 6은 1, 12는 2, 24는 3 이런식으로 매칭시키는게 필요했음.
무지성으로 다 6으로 나눴다가 24나누기 6을 3이 아니라 4라는걸 깨달음. 어쩐지 공백이 12더라 ㅅ발
2. log를 쓸때는 차피 int만 들어간다는걸 알아도 컴퓨터는 모르기 때문에 int형으로 바꿔줘야함. (당연하지만 실수함)
728x90