알고리즘
반복문 하나로 피라미드 별 찍기
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;
}
공부 초반에 하나로 할 수 있다는 얘기를 듣고 나름대로 머리를 짜내서 만들었다.
효율은 좋지않아보인다