🔗문제 풀러가기
단계별로 풀어보기 단계 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문도 역삼각형에 맞는 조건으로 바꾸어 출력해주면 끝!
순서를 정리하자면
- 삼각형 앞에 올 공백을 출력한다.
- 삼각형을 출력한다.
- 역삼각형에 앞에 올 공백을 출력한다.
- 역삼각형을 출력한다.
인 것이다!