본문 바로가기
Programming/C++ - 백준

[백준] 2445번 : '별 찍기 -8' - (C++)

by 지구코드 2023. 4. 19.
반응형


문제


풀이

n=5일 때, 첫 번째 줄에서 별 1개, 공백 8개, 별 1개, 두 번째 줄에서 별 2개, 공백 6개, 별 2개로 별은 한 개씩 늘어나며, n번째 줄까지 공백은 두 개씩 줄어드는 것을 알 수 있다.
 

따라서, 첫 번째 줄부터 n 번째 줄까지의 for문은 다음과 같다.

 

	for (int i = 1; i <= n; i++) {

		for (int j = i; j > 0; j--) {
			cout << "*";
		}

		for (int k = 2 * (n - i); k > 0; k--) {
			cout << " ";
		}

		for (int l = i; l > 0; l--) {
			cout << "*";
		}

		cout << endl;
	}

n + 1번째 줄부터 2 X n - 1번째 줄까지는 반대로 별은 한 개씩 감소하며, 공백은 두 개씩 증가한다.

 

따라서, n + 1번째 줄부터 2 X n - 1번째 줄까지의 for문은 다음과 같다.

 

	for (int i = n - 1; i > 0; i--) {

		for (int j = i; j > 0; j--) {
			cout << "*";
		}

		for (int k = 2 * (n - i); k > 0; k--) {
			cout << " ";
		}

		for (int l = i; l > 0; l--) {
			cout << "*";
		}

		cout << endl;
	}

코드

#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;

	for (int i = 1; i <= n; i++) {

		for (int j = i; j > 0; j--) {
			cout << "*";
		}

		for (int k = 2 * (n - i); k > 0; k--) {
			cout << " ";
		}

		for (int l = i; l > 0; l--) {
			cout << "*";
		}

		cout << endl;
	}

	for (int i = n - 1; i > 0; i--) {

		for (int j = i; j > 0; j--) {
			cout << "*";
		}

		for (int k = 2 * (n - i); k > 0; k--) {
			cout << " ";
		}

		for (int l = i; l > 0; l--) {
			cout << "*";
		}

		cout << endl;
	}

}

결과

 

 

2445번: 별 찍기 - 8

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 

반응형

댓글