<문제>
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
<입력>
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
<출력>
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
코드
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
for (int row = 1; row <= N; row++) {
for (int i = 1; i <= N - row; i++) {
printf(" ");
}
for (int j = 1; j <= row; j++) {
printf("*");
}
printf("\n");
}
}
코드설명
이 문제의 핵심은 *의 개수가 1개씩 늘어나지만 거꾸로 출력하도록 만들어야 한다.
예제 출력을 보면 빈칸의 개수는 N-1개의 개수에서 하나씩 줄어든다. 그래서 빈칸과 *의 출력을 따로 만들었다.
우선 외부 반복문 1번당 내부 반복문 전체 실행을 이용해서 for 반복문의 중첩을 이용
내부 반복문 중 빈칸을 출력하는 방법은 N-K까지 출력하도록 해서 빈칸 출력의 개수가 1개씩 줄어들도록 만듦
내부 반복문 중 * 을 출력하는 방법은 줄어든 빈칸의 개수와 반대로 1개씩 늘어나도록 만듦
이때 한줄의 출력이 끝나면 다음줄로 옮겨야 차례대로 * 출력이 늘어나기 때문에 제어코드 \n을 반복문 마지막에 사용