별찍기-2
문제는 다음과 같습니다.
별찍기 -1 의 출력과 반대로 N만큼의 자리에서 오른쪽으로 정렬되어 있음을 확인 할 수 있습니다.
https://edu-data.tistory.com/55
단계별로 풀어보기 백준_2438번
별 찍기 -1문제는 다음과 같습니다. 입력한 N의 크기 만큼 반복하면서 반복하는 숫자 만큼 별을 출력하면 됩니다.이는 문제를 접근하자마자 단순하게 For(반복문) 활용하여 문제를 해결하면 된
edu-data.tistory.com
이전 게시글을 참고하시면서 비교하면 좋습니다 :)
이번 문제의 핵심은 어떤식으로 오른쪽으로 정렬할 것인지 입니다.
아마 무수하게 많은 풀이 방법이 존재할 거 같습니다.
입력조건 N이 1부터100까지 입니다. 범위가 작으므로 딱히 시간복잡도에 대해서는 고민하지 않아도 될 거 같습니다.
저는 이 문제를 처음에 접했을 때 오른쪽 정렬 방식이 떠올랐습니다.
따라서 가장 먼저 rjust() 함수가 떠올랐습니다.
먼저 저의 해답 코드는 다음과 같습니다.
N = int(input())
for i in range(1,N+1):
a = '*'*i
print(a.rjust(N))
이 코드는 사용자로부터 숫자 N을 입력받아 N개의 줄에 걸쳐 오른쪽 정렬된 별 계단을 출력합니다.
각 줄에서 별의 개수는 i에 따라 증가하며, rjust(N)을 사용하여 전체 N칸의 공간에서 오른쪽으로 정렬됩니다.
코드 실행 과정
예를 들어, N = 5를 입력하면 다음과 같은 결과가 출력됩니다.
*
**
***
****
*****
각 줄이 어떻게 만들어지는지 살펴보겠습니다.
- 첫 번째 줄 (i=1): '*' → 오른쪽 정렬 (' *')
- 두 번째 줄 (i=2): '**' → 오른쪽 정렬 (' **')
- 세 번째 줄 (i=3): '***' → 오른쪽 정렬 (' ***')
- 네 번째 줄 (i=4): '****' → 오른쪽 정렬 (' ****')
- 다섯 번째 줄 (i=5): '*****' → 오른쪽 정렬 ('*****')
핵심 개념: rjust()를 활용한 정렬
여기에서 핵심 역할을 하는 부분은 rjust(N)입니다.
rjust()는 문자열을 오른쪽으로 정렬하고, 왼쪽을 공백으로 채우는 역할을 합니다.
코드의 확장: 왼쪽 정렬 및 가운데 정렬
같은 방식으로 ljust()와 center()를 사용하면 각각 왼쪽 정렬과 가운데 정렬이 가능합니다.
이번 코드에서는 for 반복문과 문자열 정렬(rjust())을 활용하여 오른쪽 정렬된 별 계단을 출력하는 방법을 살펴보았습니다.
이제 같은 원리를 활용하여 다양한 정렬 방식으로 패턴을 출력할 수도 있습니다.
이번에 정답 비율을 분석해보겠습니다.
저의 예상은 40% 예상하고 있었습니다. 오른쪽 정렬 함수 rjust()가 단계별로 풀어보기 초반 단계인 만큼 접하기 어렵다고 생각하였기 때문입니다. 하지만 높은 정답 비율은 아니지만 절반 보다 더 많은 사람들이 정답 처리가 된 것을 확인할 수 있습니다.
이번 문제에서는 다른 사람의 공개 된 정답 코드를 보고 저와 다른 풀이를 확인해보도록 하겠습니다.
저는 rjust()가 압도적으로 많을 것이라 생각했지만, 점화식 활용처럼 많은 대부분의 python코드가 이런 식으로 이루어져있었습니다. 직접 공백을 n-1만큼 처리하며 i만큼 곱해줘 print() 한 것을 확인할 수 있습니다. 하지만 결국 이 부분이 rjust() 함수 내부 실행과정과 동일하다고 생각합니다.
'BaekJoon Reivew' 카테고리의 다른 글
단계별로 풀어보기 백준_10951번 (0) | 2025.03.17 |
---|---|
단계별로 풀어보기 백준_10952번 (0) | 2025.03.17 |
단계별로 풀어보기 백준_2438번 (0) | 2025.02.17 |
단계별로 풀어보기 백준_11022번 (2) | 2025.02.07 |
단계별로 풀어보기 백준_11021번 (0) | 2025.02.07 |