[2429] 백준 : 별찍기-2(C/C++)

지환·2021년 12월 29일
0

백준(C)

목록 보기
9/47
post-thumbnail

<문제>

첫째 줄에는 별 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을 반복문 마지막에 사용

profile
아는만큼보인다.

0개의 댓글