๊ณผ์ :
1. ๋น๊ณ ๊ฒ์ ๋ง๋ค๊ธฐ
1) 5 * 5 2์ฐจ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
2) 1~100์ฌ์ด์ ๋๋ค์ซ์๋ฅผ ์ค๋ณต ์์ด ์ฑ์ ๋ฃ๊ธฐ
3) 2์ฐจ์ ๋ฐฐ์ด์ ํ๋ฉด์ ์ถ๋ ฅ
01 02 58 82 92
~
~
~
~
4) ์ซ์๋ฅผ ์
๋ ฅํด์ ๋ฐฐ์ด์ ์ผ์นํ๋๊ฒ ์์ผ๋ฉด 0์ด๋ ํน์๋ฌธ์๋ก ๋ฐ๊พธ๊ธฐ
5) ๋น๊ณ ๊ฐฏ์ ์ฒดํฌํด์ 5๊ฐ ์ด์ ๋น๊ณ ๊ฐ ์์ฑ๋๋ฉด ๊ฒ์ ํด๋ฆฌ์ด
------------------------------------------------
๊ณ ๊ธ: ๋ฐฐ์ด ์ถ๋ ฅ์ ๋ค ๊ฐ๋ฆฌ๊ณ ์๋ํ์ ์ถ๊ฐํด์
ํ์์์ ๋น๊ณ ๋ง์ถ๋ฉด ๊ฒ์ํด๋ฆฌ์ด
------------------------------------
2. ์ฌ๋ผ์ด๋ ํผ์ฆ๊ฒ์
1. n * n 2์ฐจ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
2. 0๋ถํฐ n * n - 1 ๊น์ง ๋ฐฐ์ด ์ฑ์๋ฃ๊ธฐ
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
3. w, a, s, d๋ฅผ ์
๋ ฅํด์ 0๋ฒ์ ์ํ ์ข์ฐ๋ก ์ด๋ํ๊ธฐ
4. ๋๋ค์ผ๋ก 0๋ฒ์ ๋ง์ด ์ด๋ ์์ผ์ ์
ํํ๊ธฐ
5. ๊ฒ์ ์์ํ๋ฉด 0๋ฒ์ ์์ง์ฌ์ ์ฒ์ ๋ชจ์์ผ๋ก ๋ง์ถ๋ฉด ๊ฒ์ ํด๋ฆฌ์ด
---------------------------------
๊ณ ๊ธ: ์๊ฐ์ ํ
๋น๊ณ ๊ฒ์ โผ



์๋ณด์ด๋๊ฑด ๋ง์ถ๊ธฐ๊ฐ ์ด๋ ค์์ ๋ฐฐ์ด ๋ณด์ด๊ฒํ๊ณ ์ดฌ์ํ์ต๋๋ค.. ใ ใ ;
#include <iostream>
#include <time.h>
#include <Windows.h>
using namespace std;
typedef unsigned int uint;
#define LENGTH 5
#define MIN_NUMBER 1
#define MAX_NUMBER 100
#define MAX_CLEAR_NUM 5
#define MAX_ATTEMP_NUM 30
void SetArrayNumbers(uint* arr, uint bingo[][LENGTH]);
void PrintArray(uint arr[][LENGTH]);
void CheckInputNumber(uint arr[][LENGTH]);
void CheckBingo(uint arr[][LENGTH], uint& rowCheck, uint& colCheck, uint& diagUpCheck, uint& diagDownCheck, uint& bingoCount);
bool PrintResult(uint& attempCount, const uint& bingoCount);
void Shuffle(uint* arr);
//i * 5 + j
int main()
{
srand(time(NULL));
uint numArray[MAX_NUMBER] = {};
uint bingoArray[LENGTH][LENGTH] = {};
uint bingoCount = 0;
uint rowCheck, colCheck, diagUpCheck, diagDownCheck;
uint attempCount = 0;
SetArrayNumbers(numArray, bingoArray); //๋ฐฐ์ด์ ๋๋ค๊ฐ ๋ฃ๊ธฐ
while (true)
{
CheckInputNumber(bingoArray); //์
๋ ฅ๋ฐ์์ ๋ง์๊ฒ ์๋์ง ์ฒดํฌ
PrintArray(bingoArray); //๋น๊ณ ํ ์ถ๋ ฅ
CheckBingo(bingoArray, rowCheck, colCheck, diagUpCheck, diagDownCheck, bingoCount); //๋น๊ณ ์ฒดํฌํ๊ธฐ
if (!PrintResult(attempCount, bingoCount))
return 0;
}
}
void SetArrayNumbers(uint* arr, uint bingo[][LENGTH])
{
for (uint i = 0; i < MAX_NUMBER; i++)
{
arr[i] = i + 1;
}
Shuffle(arr);
for (uint i = 0; i < LENGTH; i++)
{
for (int j = 0; j < LENGTH; j++)
{
bingo[i][j] = arr[i * 5 + j];
}
}
}
void PrintArray(uint arr[][LENGTH])
{
system("cls");
for (uint i = 0; i < LENGTH; i++)
{
for (uint j = 0; j < LENGTH; j++)
{
if (arr[i][j] == 0)
cout << "ใ
";
else
cout << "?? ";
//printf("%.2d ", arr[i][j]);
}
cout << endl;
}
}
void CheckInputNumber(uint arr[][LENGTH])
{
uint input;
cout << "1~100 ์ฌ์ด ๊ฐ์ ์
๋ ฅํด์ฃผ์ธ์ : ";
cin >> input;
for (uint i = 0; i < LENGTH; i++)
{
for (uint j = 0; j < LENGTH; j++)
{
if (arr[i][j] == input)
{
arr[i][j] = 0;
break;
}
}
}
}
//๋น๊ณ ์ฒดํฌํ๊ธฐ
void CheckBingo(uint arr[][LENGTH], uint& rowCheck, uint& colCheck, uint& diagUpCheck, uint& diagDownCheck, uint& bingoCount)
{
bingoCount = 0;
diagUpCheck = 0;
diagDownCheck = 0;
for (uint i = 0; i < LENGTH; i++)
{
rowCheck = 0;
colCheck = 0;
for (uint j = 0; j < LENGTH; j++)
{
if (arr[i][j] == 0)
rowCheck++;
if (arr[j][i] == 0)
colCheck++;
if (rowCheck == 5)
bingoCount++;
if (colCheck == 5)
bingoCount++;
}
if (arr[i][i] == 0)
diagDownCheck++;
if (arr[i][LENGTH - 1 - i] == 0)
diagUpCheck++;
if (diagDownCheck == 5)
bingoCount++;
if (diagUpCheck == 5)
bingoCount++;
}
cout << "๋น๊ณ ๊ฐ์: " << bingoCount << endl;
}
bool PrintResult(uint& attempCount, const uint& bingoCount)
{
cout << ++attempCount << "๋ฒ ์๋ํ์ต๋๋ค. ๋จ์ ์๋ํ์๋ " << MAX_ATTEMP_NUM - attempCount << endl;
if (attempCount == MAX_ATTEMP_NUM)
{
cout << "๊ฒ์ ์คํจ" << endl;
return false;
}
if (bingoCount >= 5)
{
cout << "๊ฒ์ ํด๋ฆฌ์ด" << endl;
return false;
}
return true;
}
void Shuffle(uint* arr)
{
for (int i = 0; i < 1000; i++)
{
int sour = rand() % MAX_NUMBER;
int dest = rand() % MAX_NUMBER;
int temp;
temp = arr[sour];
arr[sour] = arr[dest];
arr[dest] = temp;
}
}
์ฌ๋ผ์ด๋ํผ์ฆโผ

๋ง์ถ๊ธฐ ์ด๋ ค์์ ๊ทธ๋ฅ ์ ๋ ฌํ๊ณ ์ฐ์์ต๋๋ค..;
#include <iostream>
#include <time.h>
#include <conio.h>
#include <Windows.h>
using namespace std;
//i * 5 + j
struct ZeroInex
{
int i;
int j;
};
void Swap(int &sour, int &dest);
void Shuffle(int** arr, const int& inputArrSize);
void SetArray(int** array, const int& inputArrSize);
void PrintArray(int** array, const int& inputArrSize);
void FindZero(int** array, const int& inputArrSize, ZeroInex& zeroIndex);
bool CheckAnswer(int** array, const int& inputArrSize);
int main()
{
srand(time(NULL));
cout << "๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์: ";
int inputArrSize;
cin >> inputArrSize;
int** array = NULL;
int* a = new int[3];
array = new int* [inputArrSize];
ZeroInex zeroIndex;
for (int i = 0; i < inputArrSize; i++)
{
array[i] = new int[inputArrSize];
//*(array + i) = new int[inputArrSize];
}
SetArray(array, inputArrSize);
Shuffle(array, inputArrSize);
PrintArray(array, inputArrSize);
int inputKey;
FindZero(array, inputArrSize, zeroIndex); //0์ ์์น๋ฅผ ์ฐพ๋๋ค
while (true)
{
if (_kbhit())//ํค๋ณด๋๊ฐ ๋๋ฌ์ก๋์ง ์ฒดํฌ
{
inputKey = _getch();
//w
if (inputKey == 119)
{
system("cls");
if (zeroIndex.i > 0)
{
Swap(array[zeroIndex.i][zeroIndex.j], array[zeroIndex.i - 1][zeroIndex.j]);
zeroIndex.i--;
}
}
//s
if (inputKey == 115)
{
system("cls");
if (zeroIndex.i < inputArrSize - 1)
{
Swap(array[zeroIndex.i][zeroIndex.j], array[zeroIndex.i + 1][zeroIndex.j]);
zeroIndex.i++;
}
}
//a
if (inputKey == 97)
{
system("cls");
if (zeroIndex.j > 0)
{
Swap(array[zeroIndex.i][zeroIndex.j], array[zeroIndex.i][zeroIndex.j - 1]);
zeroIndex.j--;
}
}
//d
if (inputKey == 100)
{
system("cls");
if (zeroIndex.j < inputArrSize - 1)
{
Swap(array[zeroIndex.i][zeroIndex.j], array[zeroIndex.i][zeroIndex.j + 1]);
zeroIndex.j++;
}
}
PrintArray(array, inputArrSize);
}
if (CheckAnswer(array, inputArrSize))
{
cout << "ํด๋ฆฌ์ด!" << endl;
return 0;
}
}
}
void Swap(int& sour, int& dest)
{
int temp;
temp = sour;
sour = dest;
dest = temp;
}
void Shuffle(int** arr, const int& inputArrSize)
{
for (int i = 0; i < 1000; i++)
{
int sour1 = rand() % inputArrSize;
int sour2 = rand() % inputArrSize;
int dest1 = rand() % inputArrSize;
int dest2 = rand() % inputArrSize;
Swap(arr[sour1][sour2], arr[dest1][dest2]);
//Swap((*(*(arr + sour1) + sour2)), (*(*(arr + dest1) + dest2)));
}
}
void SetArray(int** array, const int& inputArrSize)
{
for (int i = 0; i < inputArrSize; i++)
{
for (int j = 0; j < inputArrSize; j++)
{
array[i][j] = i * 5 + j;
}
}
}
void PrintArray(int** array, const int& inputArrSize)
{
for (int i = 0; i < inputArrSize; i++)
{
for (int j = 0; j < inputArrSize; j++)
{
printf("%.2d ", array[i][j]);
}
cout << endl;
}
}
void FindZero(int** array, const int& inputArrSize, ZeroInex& zeroIndex)
{
for (int i = 0; i < inputArrSize; i++)
{
for (int j = 0; j < inputArrSize; j++)
{
if (array[i][j] == 0)
{
zeroIndex.i = i;
zeroIndex.j = j;
break;
}
}
}
}
bool CheckAnswer(int** array, const int& inputArrSize)
{
int checkCount = 0;
for (int i = 0; i < inputArrSize; i++)
{
for (int j = 0; j < inputArrSize; j++)
{
if (array[i][j] == i * 5 + j)
checkCount++;
}
}
if (checkCount == inputArrSize * inputArrSize)
return true;
return false;
}
'๐ฑ > ๐ฑ์ฐ์ต๐ฑ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
221213_๋ฆฌ๊ทธ๊ฒ์๋ง๋ค๊ธฐ (0) | 2022.12.13 |
---|---|
221209_ํ์๊ฒ์ ๋ง๋ค๊ธฐ (0) | 2022.12.09 |
221207_๊ณผ์ ์ซ์์ผ๊ตฌ (0) | 2022.12.07 |
221206 ๊ณผ์ _์์๋ + ๋ค์ด์๋ชฌ๋ ๋ณ (0) | 2022.12.06 |
221205_๊ฐ์๋ฐ์๋ณด (0) | 2022.12.05 |
๋๊ธ