jyamethyst21 님의 블로그

백준 2443번- '별 찍기 - 6' (PYTHON 풀이) 본문

CODING 💻

백준 2443번- '별 찍기 - 6' (PYTHON 풀이)

jyamethyst21 2025. 12. 1. 00:39

문제:

 

새로운 유형의 별찍기 문제이다. 별모양은 역피라미드이다.

예전에 피라미드+역피라미드 모양의 별찍기 유형을 푼 적이 있어서, 그때 역피라미드 모양 코드를 생각하면서 풀면 쉬울 것 같다.

 

풀이:

N = int(input())
b = 0

for i in range(N*2-1, 0, -2):
    print(" " * b + "*" * i)
    b += 1

이전 유형에서 풀어서 그런지 정말 빨리, 쉽게 풀었다.

우선 공백을 찍어줄 변수 b를 0으로 선언해준다. 0으로 해주는 이유는 첫번째 줄은 'N * 2 - 1' 만큼 별이 찍히는데 이때는 공백은 따로 안찍히기 때문이다.

그 다음줄부터 공백의 수가 1개씩 증가하기 때문에 초깃값은 0, 반복문에서 1씩 증가하는 코드를 작성했다.

반복문 내부를 살펴보면 앞서 말한 것처럼 첫번째 줄은 'N * 2 - 1' 만큼 별이 찍히기 때문에 시작값을 N * 2 - 1로 지정하고 마지막 줄의 별은 1개이므로 1개가 찍힐 수 있게 종료값은 0으로 설정한다. (0으로 설정해야 1까지 반복함) 그 후 증감값은 -2로 설정해서 별의 개수를 2개씩 줄이도록 한다. 그리고 공백값인 b를 1씩 증가해주면 예제 출력처럼 역피라미드 모양의 별이 찍힌다!

 

아 참고로, '별은 가운데를 기준으로 대칭이어야 한다.' 라는 문장은 print문에서 공백 + 별 개수 찍는 순서로 작성해야 한다는 의미이다. 별 개수 + 공백 순으로 적는다면 당연히 왼쪽 공백이 없는 모양의 별이 찍힌다. 이 점을 참고해서 풀면 좋겠다!