본문 바로가기
백준 알고리즘 단계별 풀이 (문제 수)/반복문 (14)

[C++] 별 찍기 - 2 / 오른쪽 정렬로 찍기

by 17번 일개미 2022. 6. 17.
728x90

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.


예제 출력

    *
   **
  ***
 ****
*****

 


풀이

#include <iostream>
using namespace std;

int main()
{
	int num;
	cin >> num;
	for (int i = 1; i <= num; i++)
	{
		// 먼저 최대 숫자만큼 공백을 찍는다고 생각
		for (int j = num; j >= 1; j--)
		{
			// j 만큼 공백을 찍다가 j가 층 수인 i보다 같아질 때 부터
			// 남은 갯수만큼은 별을 찍는다.
			if (j <= i) cout << "*";
			else cout << " ";
		}
		cout << "\n";
	}
}

1. num 이라는 최대 층 수를 입력받는다.

2. i는 층수만큼 돌기 위한 사이클(현재 층수를 의미), j 는 현재 돌고 있는 층수에서 몇번 찍었는지 확인하는 사이클

3. j 가 층수 num 에서부터 거꾸로 내려오면서, 현재 층수 i 와 같아지는 시점부터 별을 출력

 

결과

5
    *
   **
  ***
 ****
*****
728x90