[백준 2444] 별 찍기 - 7

alsry._.112·2023년 7월 25일
0

백준

목록 보기
2/102

🔗문제 풀러가기
단계별로 풀어보기 단계 6의 3번째 문제이다.

문제 분석

이 문제는 마름모를 출력하는 문제이다.
마름모는 삼각형과 역삼각형 2개로 나누어 출력하면 된다.

코드

#include <iostream>
using namespace std;

int main()
{
	int input;

	cin >> input;

	for (int i = 1; i <= input; i++)					// 몇단 삼각형인지
	{
		for (int j = 0; j < input - i; j++)				// 삼각형 앞에 오는 공백 출력
		{
			cout << " ";
		}

		for (int k = 1; k <= 2 * i - 1; k++)			// 삼각형을 이루는 별 출력
		{
			cout << "*";
		}

		cout << "\n";
	}

	for (int i = 1; i <= input; i++)				// 몇단 삼각형인지(역삼각형)
	{
		for (int j = 1; j <= i; j++)					// 삼각형 앞에 오는 공백 출력(역삼각형)
		{
			cout << " ";
		}

		for (int k = (input - i) * 2 - 1; k > 0; k--)   // 삼각형을 이루는 별 출력(역삼각형)
		{
			cout << "*";
		}

		cout << "\n";
	}

}

해석

우선 삼각형의 크기를 정하는 정수를 하나 입력받는다.
그 후 그 정수만큼 for문을 돌리는데 이 for문은
삼각형의 앞에 오는 공백을 직각 삼각형 형태로 먼저 출력 한 후
삼각형을 이루는 별을 출력하는데 이 삼각형은 for문의
int k = 1; k <= 2 * i - 1; k++
이라는 조건의 이해 i에 따라 수가 1부터 공차가 2인 등차수열을 형성한다
(1,3,5,7,9......)
따라서 별이 예제 출력에 나오는 것처럼

이렇게 아주 잘 출력된다.

그 후 역삼각형을 출력하는 3개의 for문도 역삼각형에 맞는 조건으로 바꾸어 출력해주면 끝!

순서를 정리하자면

  1. 삼각형 앞에 올 공백을 출력한다.
  2. 삼각형을 출력한다.
  3. 역삼각형에 앞에 올 공백을 출력한다.
  4. 역삼각형을 출력한다.

인 것이다!

profile
소통해요

0개의 댓글