알고리즘

반복문 하나로 피라미드 별 찍기

Cording Newbie 2019. 11. 6. 17:23
#include <iostream>
#define _CRT_SECURE_NO_WARNINGS
#define WIDTH 20

using namespace std;

int main()
{

	int star = WIDTH, stack = WIDTH -1; // 별 중심 위치와 빈칸 스택
	bool turn = false; // 별찍기 bool값

	for (int i = WIDTH -2; ; i--)
	{
		if (turn) // 별찍기
		{
			cout << "*";
			if (i == 1) // 별 다 찍었을 때 false선언 및 i값 변경
			{
				cout << endl;
				turn = false;
				i = stack;
				if (stack == 0) // 마지막 줄일 경우 for문 탈출
					break;
			}
		}
		else if (i) // 빈칸 찍기
			cout << " ";
		else // 빈칸 다 찍었을 때 true 선언과 i값 변경
		{
			turn = true;
			i = (star - stack) * 2;
			stack--;
		}
	}

	return 0;
}

 

공부 초반에 하나로 할 수 있다는 얘기를 듣고 나름대로 머리를 짜내서 만들었다.

 

효율은 좋지않아보인다