A A
[백준] 2439번: 별 찍기 - 2 (by Python / 파이썬)

백준 2439번: 별찍기 (구현)

 

https://www.acmicpc.net/problem/2439


문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력

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

출력

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

예제 입력 1

5

예제 출력 1

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

풀이

n = int(input())

for i in range(1, n + 1):
    print(" " * (n - i) + "*" * i)

이 문제를 풀기 위해선 일단 반복문을 어떻게 구성을 해야할지 생각해야 합니다.

  • 입력을 받은 수만큼, 왼쪽에는 공백을 출력, 오른쪽에는 별 출력.
  • 그러면 반복문을 사용해서 i, 즉 반복문의 반복 횟수를 1부터 n+1까지 반복하도록 작성합니다.
i + 1로 표현되며, i가 0부터 시작하기 때문에 i + 1을 사용하여 별의 개수를 조절.
- i를 0부터 출력하면 맨 윗줄엔 공백만 출력되기 때문.
  • 또한, 공백과 별을 출력하는걸 한줄의 문자열로 해서 출력합니다.
    • i가 증가할수록 입력한 n의 값만큼 i의 값을 n에서 i를 뺀 만큼 공백을 출력
    • 그리고 반복분의 반봇 횟수 만큼 i개의 별을 출력.
n = 5인 경우를 예로 들어 반복문의 동작을 살펴보겠습니다.
반복 횟수 (i) 공백 개수 (n - (i + 1)) 별 개수 출력 형태
0 5 - 1 = 4 1 " *"
1 5 - 2 = 3 2 " **"
2 5 - 3 = 2 3 " ***"
3 5 - 4 = 1 4 " ****"
4 5 - 5 = 0 5 "*****"