본문 바로가기
백준

[백준] 2444번 : 별 찍기 - 7 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 14.
728x90
반응형

 

 

2444번: 별 찍기 - 7

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

해당 문제는 별의 개수가 증가하면서 한 줄씩 찍히고, 다시 별의 개수가 감소하면서 한 줄씩 찍힌다.

각 줄은 1개부터 시작하여 2개씩 늘어나는 구조로 찍히고 한 줄에 2 * N - 1개의 별이 찍히면 반대로 2개씩 감소하는 구조로 별이 찍히게 된다.

찍히는 별의 모양은 마름모 모양으로 출력되기 때문에 각 출력되는 별은 가운데 정렬한 모양으로 찍혀야 하며, 이는 앞에 공백을 출력함으로써 해결할 수 있다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 정수를 입력받는다. N = int(sys.stdin.readline())
  3. 처음에는 별의 개수가 증가하며 찍힌다. 하여 1부터 입력받은 수 전까지 반복하며 별을 찍는다. for i in range(1, N)
  4. 한 줄에 찍는 최대 별의 개수는 2 * N - 1개이다. 하여 이전 개수의 별을 찍을 때는 앞에 공백을 출력하여 자리 수를 맞춰주어야 한다.
  5. 공백의 개수는 N에서 i를 빼준 개수이다. for j in range(N - i): print(" ", end='')
  6. 별의 개수는 2 * i - 1개이다. for j in range(2 * i - 1): print("*", end='')
  7. 공백과 별은 이어서 한 줄에 출력해야 하기 때문에 줄 바꿈 하지 않는다.
  8. 줄마다 별을 찍었으면 다음 줄로 이동한다. print()
  9. 별의 개수가 증가하는 별 찍기가 끝났으면 반대로 감소하는 별 찍기를 수행한다. 감소하는 별 찍기는 N부터 1까지 반복하며 별을 찍는다. for i in range(N, 0, -1)
  10. 한 줄에 출력되는 공백과 별의 개수는 증가하는 별 찍기와 동일하다.
  11. 공백의 개수는 N에서 i를 빼준 개수이고 for j in range(N - i): print(" ", end='')
  12. 별의 개수는 2 * i - 1개이다. for j in range(2 * i - 1): print("*", end='')
  13. 여기서도 마찬가지로 공백과 별은 이어서 한 줄에 출력해야 하기 때문에 줄 바꿈 하지 않는다.
  14. 줄마다 별을 찍었으면 다음 줄로 이동한다. 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
반응형