문제 

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제
별은 가운데를 기준으로 대칭이어야 한다.

해석

입력값 N이 주어지면, N줄에 걸쳐 각 줄마다 별(*)을 (2*i+1)개 출력한다.
또한 각 줄은 별을 중심으로 대칭 형태로 출력되며, 왼쪽에 (N-i-1)개의 공백을 추가해줘야 한다.

입출력 예시

 


 

풀이 1: 별 개수 계산 중심

import sys

n = int(sys.stdin.read().strip())

for i in range(n):
    print(('*' * (i+1)).rjust(n))
  • 왼쪽에는 ' ' * (n - (i+1))만큼 공백을 찍어 정렬을 맞춘다.
  • 별은 '*' * (2*i+1)개 찍어주어, 줄 번호에 따라 홀수 개의 별이 출력된다.

 

풀이 2: 좌우 삼각형 이어 붙이기

import sys

n = int(sys.stdin.read().strip())

for i in range(n):
    print(('*' * (i+1)).rjust(n) + ('*' * (i)))
  • (2*i+1)개 별을 만들지 않고, 삼각형을 조합해서 해결한 방식이다.
  • 왼쪽 삼각형: ('*' * (i+1)).rjust(n) → 오른쪽 정렬된 별
  • 오른쪽 삼각형: ('*' * (i)) → 별만 추가
  • 왼쪽과 오른쪽 삼각형 두 개를 이어붙여 대칭 구조를 완성한다.

 

❌ 시도했지만 실패한 방법

import sys

n = int(sys.stdin.read().strip())

for i in range(n):
    print(('*' * (2*i+1)).center(2*n))
  • center(2n)을 이용해 가운데 정렬을 시도했다.
  • 겉보기에는 출력이 비슷하지만,
  • 별 양쪽 끝에도 공백이 들어가기 때문에 백준에서는 "출력 형식이 잘못되었습니다" 오류가 발생한다.

왼쪽이 예시 출력, 오른쪽이 center() 사용

  • 실제로 위 이미지처럼 출력 예시와 내 결과물을 비교했을 때, 내 답안은 오른쪽에도 공백이 찍혀있는 것을 확인할 수 있다. 이는 문제의 출제 의도와 다른 결과이기 때문에 정답이라고 볼 수 없다.
  • 주의! 문제는 정확히 필요한 만큼만 출력할 것을 요구한다. 출력 오류를 조심하자.

 

 

 

요약

실행 시간 메모리 사용
32ms 32412KB

 

 

 


 

 

 

끝!

 

'Study > Algorithm' 카테고리의 다른 글

[백준] 2440번: 별 찍기 - 3  (0) 2025.04.28
[백준] 2439번: 별 찍기 - 2  (0) 2025.04.28
[백준] 백준 2753번: 윤년  (0) 2025.04.24
[백준] 2475번: 검증수  (0) 2025.04.24
[백준] 2438번: 별 찍기 - 1  (0) 2025.04.24