코딩딩/BOJ

[백준 2445] 문제풀이

전낙타 2023. 5. 19. 00:30

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1 

5

예제 출력 1 

*        *
**      **
***    ***
****  ****
**********
****  ****
***    ***
**      **
*        *

 

정답

 

기본적인 별찍기 문제이다. 너무 어렵게 생각해 문제를 복잡하게 만들지 말고 침착하게 파악한 뒤 가장 기초적인 기능부터 추가해보며 문제를 풀어나가자.
# 반복할 횟수 n의 값을 입력받는다.
n = int(input())

# i에 1,2,3...n 값을 넣어 루프를 돌려준다
for i in range(1, n+1):
    # i의 값 만큼 *를 출력하고 줄은 바꾸지 않는다.
    print("*" * i, end="")
    # 가로열에서 i를 빼준 뒤 2를 곱해준 값만큼 공백을 출력하고 줄은 바꾸지 않는다.
    print(" "*((n-i)*2), end="")
    # 나머지 *을 출력하고 출을 바꿔준다.
    print("*" * i)
# for문이 끝나 별찍기의 절반이 완성되면
else:
    # 다시한번 루프를 돌려주는데 이번엔 n...3,2,1과 같이 숫자가 감소하도록 루프를 돌린다.
    for i in range(n-1, 0, -1):
        # 위 코드와 같이 출력해준다.
        print("*" * i, end="")
        print(" "*((n-i)*2), end="")
        print("*" * i)