문제
첫째 줄에는 별 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)을 이용해 가운데 정렬을 시도했다.
- 겉보기에는 출력이 비슷하지만,
- 별 양쪽 끝에도 공백이 들어가기 때문에 백준에서는 "출력 형식이 잘못되었습니다" 오류가 발생한다.
- 실제로 위 이미지처럼 출력 예시와 내 결과물을 비교했을 때, 내 답안은 오른쪽에도 공백이 찍혀있는 것을 확인할 수 있다. 이는 문제의 출제 의도와 다른 결과이기 때문에 정답이라고 볼 수 없다.
- 주의! 문제는 정확히 필요한 만큼만 출력할 것을 요구한다. 출력 오류를 조심하자.
요약
실행 시간 | 메모리 사용 |
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 |