[백준] 별 찍기 - 8 (Python)

규갓 God Gyu·2024년 7월 18일

백준

목록 보기
7/96

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

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

출력

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

예제 입력 1

5

예제 출력 1

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

풀이 과정

  1. 일단 입력한 값 N을 int로 받는다
N = int(input())
  1. 1부터 N개까지 *을 한 줄마다 점차 늘려서 출력시킨다
for i in range(1, N+1):
	print('*' * i)
  1. 아래에는 N-1개부터 1개까지 점차 *이 줄어드는 출력 코드를 만든다
for i in range(N-1, 1):
	print('*' * i)
  1. 예제코드를 보면 왼쪽은 완성되었지만 규칙적인 공백이 있는 오른쪽 *도 출력해야한다. 여기서 첫줄의 공백은 8, 6,4,2,0으로 줄어들고 밑에줄은 2,4,6,8로 규칙적으로 늘어난다
for i in range(1, N+1):
	star = '*' * i
    spaces = ((N * 2) - (i * 2))
	print(star + spaces + star)
    
for i in range(N-1, 1):
	star = '*' * i
    spaces = ((N * 2) - (i * 2))
	print(star + spaces + star)

최종 코드

# 숫자 N을 입력받습니다.
N = int(input())

# 1부터 N번째까지 차례로 별을 늘려가며 출력
# 공백은 첫줄은 8 둘째줄은 6 이런식으로 발생됨
for i in range(1, N + 1):
  star = '*' * i
  spaces = ' ' * ((N * 2) - (i * 2))
  print(star + spaces + star)
  
# N-1번째부터 1까지 차례로 별을 줄여가며 출력
# 공백은 첫줄은 0 2 4 6 8이런식으로 발생
for i in range(N-1, 0, -1):
  star = '*' * i
  spaces = ' ' * ((N * 2) - (i * 2))
  print(star + spaces + star)

헤깔렸던 부분

  1. 점차 늘려나갔다 점차 줄어나가는 *에 대해서 print를 2번 해주는 for문을 2번 작성해야한다는 생각까지 하지 못했음
  2. 오른쪽 별에 대해선 공백의 규칙성이 있음에도 어떻게 그려나가야할지 감을 찾지 못했음

꼭 내일 다시 풀어볼 것!!

profile
웹 개발자 되고 시포용

0개의 댓글