본문 바로가기

알고리즘

알고리즘 문제 5. 별짓기

반응형

별 짓기 내 풀이)

#include <iostream>
int main()
{

	for (int i = 0; i < 10; i++)
	{
		for (int j = 10; j > 0; j--)
		{
			if (i < j) {
				printf(" ");
			}
			else {
				printf("*");
			}
		}

		for (int j = 0; j < 10; j++)
		{
			if (i < j) {
				printf(" ");
			}
			else {
				printf("*");
			}
		}

		printf("\n");

		
	}



	return 0;
}

문제점 : 전체 영역을 채워넣는 방식으로만 사고함
개선점 : 각 줄을 넘어 갈때 마다 빈 공간이 1칸씩 줄어들고, 각 줄을 넘어갈때 줄 * 2 + 1 방식으로 별의 갯수를 늘려 나가는 방식을 사용할수 있다.

별 짓기 방식 2)

#include <iostream>

using namespace std;

int main() {

	//1. 빈칸은 4 - 3 -2- 1 - 0
	//2. 별의 개수는 1 -3 -5- 7 -9
	//3. 총 라인수는 5줄

	//line : 0 - 1 - 2- 3 - 4
	for (int line = 0; line < 5; line++)
	{
		//1. 빈칸은 4 - 3- 2 -1 -0
		for (int spaceCount = 0; spaceCount < 4 - line; spaceCount++)
		{
			cout << " ";
		}

		//2. 별의 개수는  1 - 3- 5 -7- 9
		for (int starCount = 0; starCount < line * 2 + 1; starCount++)
		{
			cout << "*";
		}

		cout << endl;
	}

	return 0;
}
반응형