Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 2522번- '별 찍기 - 12' (PYTHON 풀이) 본문
문제:

오랜만에 별찍기 문제를 가지고 왔다. 되게 유형이 많은 것 같다.
이번 문제는 피라미드 + 역피라미드 모양인데 반으로 잘라진 형태이다.
풀이:
N = int(input())
b = N - 1
for i in range(1, N+1):
print(" " * b + "*" * i)
b = b - 1
b = 1
for i in range(N-1, 0, -1):
print(" " * b + "*" * i)
b = b + 1
입력값을 받고, 공백을 담을 b 변수에 입력값 - 1만큼 넣어준다. 예제 출력을 보면 입력값 - 1 만큼 공백이 들어가고 그 다음 1만큼 별이 찍히고 있기 때문에 우선 공백을 저렇게 계산해서 선언해주었다.
그 다음 반복문을 돌건데, 반복문에서 i는 별을 찍어주는 역할을 하기 때문에 예제 출력과 같이 첫번째 줄엔 1개만 찍히므로 1부터 찍힐 수 있게 시작 조건을 1부터 N+1까지로 넣어주었다.(종료는 N까지 돌도록 함)
그러면 입력값이 3일 때, (빈칸 2개 + 별 한개), (빈칸 1개 + 별 두개), (빈칸 0개 + 별 3개) 형태로 찍히게 된다. 첫번째 반복문을 돌면 역피라미드 모양 3줄이 완성될 것이다. (예제 출력 기준)
그 다음은 역피라미드 모양을 만들어줄건데, 이때 b는 무조건 1일 것이다. 입력값이 3이든 4든 그 이상이든간에 역피라미드 모양이 찍히기 시작하는 라인은 무조건 공백이 1개만 있으므로 b를 다시 1로 초기화해서 두번째 반복문을 실행한다.
이때 시작 조건은 N-1로 해주어서 별 모양을 N-1개만 찍히도록 한다. 그 다음 별을 1까지 찍고 있기 때문에 1까지 돌도록 종료를 0으로 두고 증감값을 -1로 작성한다. 그러면 두번째 반복문에서는 입력값이 3일 때, (빈칸 1개 + 별 2개), (빈칸 2개 + 별 1개) 형태로 찍히게 될 것이다.
'CODING 💻' 카테고리의 다른 글
| 백준 1100번- '하얀 칸' (PYTHON 풀이) (0) | 2026.01.01 |
|---|---|
| 백준 11723번- '집합' (PYTHON 풀이) (0) | 2025.12.31 |
| 백준 9656번- '돌 게임 2' (PYTHON 풀이) (0) | 2025.12.29 |
| 백준 2953번- '나는 요리사다' (PYTHON 풀이) (0) | 2025.12.28 |
| 백준 9095번- '1, 2, 3 더하기' (PYTHON 풀이) (0) | 2025.12.27 |
