728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 별의 개수가 증가하면서 한 줄씩 찍히고, 다시 별의 개수가 감소하면서 한 줄씩 찍힌다.
각 줄은 1개부터 시작하여 2개씩 늘어나는 구조로 찍히고 한 줄에 2 * N - 1개의 별이 찍히면 반대로 2개씩 감소하는 구조로 별이 찍히게 된다.
찍히는 별의 모양은 마름모 모양으로 출력되기 때문에 각 출력되는 별은 가운데 정렬한 모양으로 찍혀야 하며, 이는 앞에 공백을 출력함으로써 해결할 수 있다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 정수를 입력받는다. N = int(sys.stdin.readline())
- 처음에는 별의 개수가 증가하며 찍힌다. 하여 1부터 입력받은 수 전까지 반복하며 별을 찍는다. for i in range(1, N)
- 한 줄에 찍는 최대 별의 개수는 2 * N - 1개이다. 하여 이전 개수의 별을 찍을 때는 앞에 공백을 출력하여 자리 수를 맞춰주어야 한다.
- 공백의 개수는 N에서 i를 빼준 개수이다. for j in range(N - i): print(" ", end='')
- 별의 개수는 2 * i - 1개이다. for j in range(2 * i - 1): print("*", end='')
- 공백과 별은 이어서 한 줄에 출력해야 하기 때문에 줄 바꿈 하지 않는다.
- 줄마다 별을 찍었으면 다음 줄로 이동한다. print()
- 별의 개수가 증가하는 별 찍기가 끝났으면 반대로 감소하는 별 찍기를 수행한다. 감소하는 별 찍기는 N부터 1까지 반복하며 별을 찍는다. for i in range(N, 0, -1)
- 한 줄에 출력되는 공백과 별의 개수는 증가하는 별 찍기와 동일하다.
- 공백의 개수는 N에서 i를 빼준 개수이고 for j in range(N - i): print(" ", end='')
- 별의 개수는 2 * i - 1개이다. for j in range(2 * i - 1): print("*", end='')
- 여기서도 마찬가지로 공백과 별은 이어서 한 줄에 출력해야 하기 때문에 줄 바꿈 하지 않는다.
- 줄마다 별을 찍었으면 다음 줄로 이동한다. print()
반응형
3. 소스코드
import sys
N = int(sys.stdin.readline())
for i in range(1, N):
for j in range(N - i):
print(" ", end='')
for j in range(2 * i - 1):
print("*", end='')
print()
for i in range(N, 0, -1):
for j in range(N - i):
print(" ", end='')
for j in range(2 * i - 1):
print("*", end='')
print()
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1010번 : 다리 놓기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.18 |
---|---|
[백준] 2442번 : 별 찍기 - 5 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.17 |
[백준] 11724번 : 연결 요소의 개수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.16 |
[백준] 10816번 : 숫자 카드 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.15 |
[백준] 9461번 : 파도반 수열 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.13 |
[백준] 1158번 : 요세푸스 문제 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.12 |
[백준] 11721번 : 열 개씩 끊어 출력하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.11 |
[백준] 10866번 : 덱 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.10 |