본문 바로가기
백준 (Baekjoon)/백준 - 파이썬 풀이

[파이썬] 백준 6단계 3 <심화 1> - Q.2444

by 초코choco 2024. 11. 5.

Q.2444

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

 

입력

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

 

출력

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

 

출력 예시를 보면 아래 줄로 이동할수록 별이 2개씩 + / - 되고 있음
  → (2 * i) - 1 의 규칙!

ex) N = 5라면,
첫째 줄은 (2 * 1) - 1 = 1,
둘째 줄은 (2 * 2) - 1 = 3,
셋째 줄은 (2 * 3) - 1 = 5, ...

이렇게 하다가 제일 길게 출력되는 i = 5 까지 이동하면 (2 * 5) - 1 = 9, 즉 예제 출력처럼 중간에 별 9개를 출력함

아래로 갈수록 2개씩 늘어남, 중간 이후로 줄어드는 것도 같은 원리! (큰 수부터 역으로 출력)

ex) N = 5라면,
역출력 첫째 줄은 (2 * 4) - 1 = 7,
역출력 둘째 줄은 (2 * 3) - 1 = 5,
역출력 셋째 줄은 (2 * 2) - 1 = 3, ...

 

N = int(input())

# 위에서부터 하나씩 + 하기
# range()범위를 1부터 시작하자
# 아래 별을 출력하기 위해선 인덱스인 i = 1부터 시작해야 함...
#  -> range(N)으로 입력해서 0부터 시작한다면, 첫째 줄은 아래 print()문에서 2 * i - 1이 -1이 되어버림!
for i in range(1, N + 1):
    # ex) N = 5라면, (첫째 줄인 경우의 출력)
    #    공백 ''는 5 - 1 = 4
    #    별 '*'는 2 * 1 = 2, 2 - 1 = 1 이니, 첫째 줄은 별 하나만 출력
    print(' ' * (N - i)+ ("*" * (2 * i - 1)))

# 위에서부터 하나씩 - 하기
for i in range(N - 1, 0, -1):
    print(' ' * (N - i)+ ("*" * (2 * i - 1)))