1. 1 ~ 25까지의 숫자가 랜덤하게 배치되는 5X5의 빙고게임 판을 생성한 후, 숫자 입력을 받을 때마다 해당 숫자를 지워주고 가로, 세로, 대각선의 빙고 줄이 완성될 때마다 빙고 개수를 갱신해서 표시해 주는 빙고 게임을 제작 하시오.

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	srand(time(NULL));

	int Bingo[25] = {};
	char empty[25] = {};

	for (int i = 0; i < 25; i++)
	{
		Bingo[i] = i + 1;
	}

	int iTemp, Index_1, Index_2;

	// 숫자를 랜덤으로 섞는다.
	for (int i = 0; i < 100; i++)
	{
		Index_1 = rand() % 25;
		Index_2 = rand() % 25;

		iTemp = Bingo[Index_1];
		Bingo[Index_1] = Bingo[Index_2];
		Bingo[Index_2] = iTemp;
	}

	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			if (empty[i * 5 + j] == ' ')
			{
				cout << empty[i * 5 + j] << '\\t';
			}

			else
			{
				cout << Bingo[i * 5 + j] << '\\t';
			}
		}
		cout << endl;
	}

	//게임 시작

	while (true) 
	{
		//별을 위한 배열

		int iNum;
		cout << "\\n\\n숫자를 입력해 주세요 : ";
		cin >> iNum;
		cout << endl;

		for (int i = 0; i < 25; i++) 
		{
			if (Bingo[i] == iNum) 
			{
				empty[i] = ' ';
				cout << i << "번째에서 같습니다." << endl;
				continue;
			}
		}

		cout << endl;
		system("cls");

		for (int i = 0; i < 5; i++) 
		{
			for (int j = 0; j < 5; j++) 
			{
				if (empty[i * 5 + j] == ' ') 
				{
					cout << empty[i * 5 + j] << '\\t';
				}

				else
				{
					cout << Bingo[i * 5 + j] << '\\t';
				}
			}
			cout << endl;
		}

		//빙고 확인 가로-0.5.10,15,20을 기준으로 차례로 다 ' '이면 빙고

		//세로줄은 0,1,2,3,4를 기준으로 +5한 값이 다 ' '이면 빙고

		//대각선은 0 6 12 18 24 // 4 8 12 16 20

		int Bingo = 0;
		//1. 가로
		for (int i = 0; i < 25; i++) 
		{
			if (i % 5 == 0) 
			{
				int iRow = 0;
				for (int j = 0; j < 5; j++) 
				{
					if (empty[i + j] == ' ') 
					{
						iRow++;
					}
				}

				if (iRow == 5) 
				{
					Bingo++;
				}
			}
		}

		//2.세로

		for (int i = 0; i < 5; i++) 
		{
			int iCol = 0;

			for (int j = 0; j < 5; j++) 
			{
				if (empty[i + j * 5] == ' ') 
				{
					iCol++;
				}
			}

			if (iCol == 5) 
			{
				Bingo++;
			}
		}
		//3.대각선

		int iDiagnol1 = 0;

		for (int i = 0; i < 25; i++) 
		{
			if (i % 6 == 0) 
			{
				if (empty[i] == ' ') 
				{ 
					iDiagnol1++; 
				}
			}
		}
		if (iDiagnol1 == 5) { Bingo++; }

		int iDiagnol2 = 0;

		for (int i = 1; i < 24; i++) 
		{
			if (i % 4 == 0) 
			{
				if (empty[i] == ' ') 
				{ 
					iDiagnol2++; 
				}
			}
		}
		if (iDiagnol2 == 5) { Bingo++; }

		cout << "\\n" << "현재 " << Bingo << "줄의 빙고가 완성되었습니다." << endl;

		if (Bingo == 5) 
		{
			cout << "BINGO!" << endl;
			break;
		}
	}
	return 0;
}

N * N 달팽이 배열 알고리즘을 구현 하시오.

#include <iostream>
using namespace std;

int main()
{
	int N;

	while (true)
	{
		cout << "배열의 크기를 입력하세요 : ";
		cin >> N;

		if (N % 2 == 0)
		{
			cout << "다시 입력해주세요.";
		}

		else
		{
			break;
		}
	}

	int **snailArray = new int*[N]; // 참고해서 사용해서 잘 모른다..
	for (int i = 0; i < N; i++)
	{
		snailArray[i] = new int[N];
	}

	int index_1 = 0;	// 행 인덱스
	int index_2 = -1;	// 열 인덱스
	int arrNum = 0;		// 배열에 채워질 숫자
	int change = 1;		// 스위치 변수
	int repeat = N;		// 반복 횟수

	while (true)
	{
		for (int j = 0; j < repeat; j++) // 요거는 음~ 열?
		{
			arrNum = arrNum + 1;
			index_2 = index_2 + change;
			snailArray[index_1][index_2] = arrNum;
		}

		repeat = repeat - 1;
		if (repeat <= 0) break;

		for (int k = 0; k < repeat; k++) // 얘는 그럼 행이네
		{
			arrNum = arrNum + 1;
			index_1 = index_1 + change;
			snailArray[index_1][index_2] = arrNum;
		}

		change *= -1;
	}

	for (int l = 0; l < N; l++) // 얜 한칸씩 넓게 띄워줌 
	{
		for (int m = 0; m < N; m++)
		{
			cout << "\\t" << snailArray[l][m];
		}
		cout << endl;
	}

}