๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[inflearn ๊ฐ•์˜] ๋น™๊ณ ๊ฒŒ์ž„ - ๋น™๊ณ ๊ฒŒ์ž„ 2 ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/C++

[inflearn ๊ฐ•์˜] ๋น™๊ณ ๊ฒŒ์ž„ - ๋น™๊ณ ๊ฒŒ์ž„ 2

์ง•์ง•์•ŒํŒŒ์นด 2023. 7. 3. 19:45
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” ์–ด์†ŒํŠธ๋ฝ ๊ฒŒ์ž„์•„์นด๋ฐ๋ฏธ ๋‹˜์˜ ์œ ํŠœ๋ธŒ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

=> C++ Let's Make Games

 

๐Ÿซง ๋น™๊ณ ๊ฒŒ์ž„ 2

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

int main()
{
	srand((unsigned int)time(0));
	int iNumber[25] = {};

	// 1~25 ์ˆซ์ž ๋„ฃ๊ธฐ
	for (int i = 0; i < 25; i++) {
		iNumber[i] = i + 1;
	}
	// ์ˆซ์ž ์„ž๊ธฐ
	int iTemp, idx1, idx2;
	for (int i = 0; i < 100; ++i) {
		idx1 = rand() % 25;
		idx2 = rand() % 25;

		iTemp = iNumber[idx1];
		iNumber[idx1] = iNumber[idx2];
		iNumber[idx2] = iTemp;
	}

	int iBingo = 0;

	while (true) {
		system("cls");

		// ์ˆซ์ž๋ฅผ 5x5 ์ถœ๋ ฅ
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if (iNumber[i * 5 + j] == INT_MAX) {
					cout << "*\t";
				}
				else {
					cout << iNumber[i * 5 + j] << "\t";
				}
			}
			cout << endl;
		}

		cout << "Bingo Line : " << iBingo << endl;

		// ์ค„ ์ˆ˜๊ฐ€ 5 ์ด์ƒ์ด๋ฉด ๊ฒŒ์ž„ ์ข…๋ฃŒ
		if (iBingo > 5) {
			break;
		}

		cout << "์ˆซ์ž ์ž…๋ ฅ (์ข…๋ฃŒ : 0) : ";
		int iInput;
		cin >> iInput;

		if (iInput == 0) {
			break;
		}
		else if (iInput < 1 || iInput > 25) {
			continue;
		}
		// ์ค‘๋ณต ์ž…๋ ฅ ๋ฐฉ์ง€ ์ฒดํฌ
		bool bAcc = true;

		// ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๊ฒ€์‚ฌ
		// ์ž…๋ ฅํ•œ ์ˆซ์ž์™€ ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ๊ธฐ
		for (int i = 0; i < 25; ++i) {
			// ๊ฐ™์€ ์ˆซ์ž
			if (iInput == iNumber[i]) {
				// ์ˆซ์ž ์ฐพ์•˜์„ ๊ฒฝ์šฐ ์ค‘๋ณต๋œ ์ˆซ์ž ์•„๋‹˜
				bAcc = false;

				// ์ˆซ์ž๋ฅผ *๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ ๊ฐ’ INT_MAX
				iNumber[i] = INT_MAX;
				// ์ฐพ์•„๋ณผ ์ˆซ์ž ์—†์Œ
				break;
			}
		}
		// bAcc ๋ณ€์ˆ˜๊ฐ€ true ์ผ ๊ฒฝ์šฐ ์ค‘๋ณต๋œ ์ˆซ์ž ์ž…๋ ฅํ•ด์„œ
		// ์ˆซ์ž๋ฅผ *๋กœ ๋ฐ”๊พธ์ง€ ๋ชปํ–ˆ์œผ๋ฏ€๋กœ ๋‹ค์‹œ ์ž…๋ ฅ๋ฐ›๊ฒŒ continue
		if (bAcc) {
			continue;
		}

		// ๋น™๊ณ  ์ค„ ์ˆ˜ ์ฒดํฌ
		// ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ์นด์šดํŠธ ํ•˜๊ธฐ
		// iBingo ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ๋งค๋ฒˆ ์ดˆ๊ธฐํ™”
		iBingo = 0;

		// ๊ฐ€๋กœ, ์„ธ๋กœ ์ค„ ์ˆ˜
		int iStar1 = 0, iStar2 = 0;
		for (int i = 0; i < 5; ++i) {
			// ๋ณ„ ๊ฐœ์ˆ˜ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
			iStar1 = iStar2 = 0;

			for (int j = 0; j < 5; ++j) {
				// ๊ฐ€๋กœ ๋ณ„ ๊ฐœ์ˆ˜
				if (iNumber[i * 5 + j] == INT_MAX) {
					++iStar1;
				}

				// ์„ธ๋กœ ๋ณ„ ๊ฐœ์ˆ˜
				if (iNumber[j * 5 + i] == INT_MAX) {
					++iStar2;
				}
			}
			// ํ˜„์žฌ ์ค„์˜ ๊ฐ€๋กœ ๋ณ„ ๊ฐœ์ˆ˜๊ฐ€ ๋ช‡๊ฐœ์ธ์ง€ iStar1์— ๋“ค์–ด๊ฐ
			// iStar1์ด 5์ด๋ฉด ํ•œ์ค„์ด ๋ชจ๋‘ * ์ด๋ฏ€๋กœ ๋น™๊ณ  ์ค„ ์นด์šดํŠธ ์ฆ๊ฐ€
			if (iStar1 == 5) {
				++iBingo;
			}
			if (iStar2 == 5) {
				++iBingo;
			}
		}
		// ์™ผ์ชฝ -> ์•„๋ž˜์ชฝ ํ•˜๋‹จ ๋Œ€๊ฐ์„ 
		iStar1 = 0;
		for (int i = 0; i < 25; i += 6) {
			if (iNumber[i] == INT_MAX) {
				++iStar1;
			}
		}
		if (iStar1 == 5) {
			++iBingo;
		}

		// ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ -> ์™ผ์ชฝ ํ•˜๋‹จ ๋Œ€๊ฐ์„ 
		iStar1 = 0;
		for (int i = 4; i <= 20; i += 4) {
			if (iNumber[i] == INT_MAX) {
				++iStar1;
			}
		}
		if (iStar1 == 5) {
			++iBingo;
		}
	}
	return 0;
}

728x90
๋ฐ˜์‘ํ˜•
Comments