알고리즘/입출력

[Python] 백준 10992번: 별 찍기 - 17 풀이

아뵹젼 2021. 1. 20.

 

소스코드1

n = int(input())
print(" "*(n-1) + "*")
if(n!=1):
    for i in range(1,n-1):
        print(" " * (n-1-i) + "*" + " " * (2*i-1) + "*")
    print("*" * (2*n-1))


 

첫째줄과 마지막줄에 별 1개와 별 2n-1 개를 따로 출력해주고, 반복문안에서 나머지 별을 처리하는 코드이다.

그러나 비효율적이다.

 

소스코드2

n = int(input())
for i in range(1, n+1):
    if(i==1 or i==n):
        print(" " * (n-i) + "*" * (2*i-1))
    else:
        print(" " * (n-i) + "*" + " " * (2*(i-1)-1) + "*")

 

반복문 하나에서 조건문을 추가해 출력하는 코드이다.

첫번째 줄과 마지막줄을 한 코드로 합칠 수 있어 소스코드1보다 더욱 좋은 코드인 것 같다.

 

 

 

댓글