jyamethyst21 님의 블로그
백준 2445번- '별 찍기 - 8' (PYTHON 풀이) 본문
문제:

다른 유형의 별찍기 문제를 가지고 왔다.
조금 특이한 모양이긴 하지만 이전에 풀었던 별찍기 - 9를 참고하면 쉽게 풀 수 있다.
https://jyamethyst21.tistory.com/108
우선 피라미드 + 역피라미드를 붙인 모양인데 붙일 때 세로로 절반을 뚝 잘라서 만든 모양이다. 필자는 별찍기 - 9 문제를 풀었을 때와 동일하게 피라미드 모양 코드 따로, 역피라미드 모양 코드 따로 작성하여 붙이도록 하겠다.

이렇게 피라미드 모양을 살펴보면 우선 가장 별이 많이 찍힌 마지막 줄의 별 개수가 N * 2인 것을 알 수 있다. 그리고 첫번째 줄의 별의 개수는 2로 다음줄은 2의 배수씩 별의 개수가 늘어나고 있다.
그리고 별 개수 사이에는 공백이 자리 잡고 있다. 이는 공백을 저장하는 변수를 따로 저장해서 일정 규칙에 따라 '* + 공백 + *' 순으로 별을 출력하면 된단 얘기이다. 이때 공백을 찍는 변수 역시 일정 규칙에 따라 감소시켜줘야 한다.

다음은 역피라미드 모양이다 역피라미드 모양에서 역시 피라미드 모양처럼 규칙을 구하면 된다.
그 윗줄을 보면(피라미드 모양의 마지막 줄) 별이 N * 2만큼 찍혀있고 이번엔 반대로 2개씩 줄어들고 있다. 그리고 그 사이는 공백이 자리잡고 있다. 이 역시 규칙을 찾아서 '*' + 공백 + '*' 순으로 프린트하면 우리가 원하는 모양대로 출력이 된다.
풀이:
N = int(input())
b = N * 2 - 2
for i in range(1, N+1):
print("*" * i + " " * b + "*" * i)
b -= 2
b = 2
for j in range(N-1, 0, -1):
print("*" * j + " " * b + "*" * j)
b += 2
규칙을 찾아서 코드를 작성하면 위와 같다.
첫번째 for문은 피라미드, 두번째 for문은 역피라미드 작성 코드이다.
피라미드 모양은 우선 별 1개 + N * 2 - 2개의 공백 + 별 1개가 찍히고 이후 별이 한개씩 늘어나고 공백은 2개씩 줄고있다.
이러한 규칙을 그대로 코드로 작성하면 위와 같다.
반대로 역피라미드 모양을 살펴보면 첫 줄은 N-1개의 별 + 공백 + N-1개의 별이 찍히고 있고 이후엔 별이 2개씩 줄고 공백은 2씩 늘고있다. 이 역시 코드로 작성하면 두번째 for문과 같다.
아, 그리고 해당 코드에서 주의할 점은 각 피라미드 코드 사이에 공백의 개수인 b를 초기화 해주어야 한다는 점이다.
당연하다. 첫번째 반복문이 끝난 다음에 b는 0일 것이다. 그러니 다시 2로 초기화해주고 역피라미드 모양도 작성해야 한다!
'CODING 💻' 카테고리의 다른 글
| 백준 2475번- '검증수' (PYTHON 풀이) (0) | 2025.12.07 |
|---|---|
| 백준 10808번- '알파벳 개수' (PYTHON 풀이) (0) | 2025.12.06 |
| 백준 2163번- '초콜릿 자르기' (PYTHON 풀이) (0) | 2025.12.04 |
| 백준 5543번- '상근날드' (PYTHON 풀이) (0) | 2025.12.03 |
| 백준 1009번- '분산처리' (PYTHON 풀이) (0) | 2025.12.02 |
