출처:https://www.acmicpc.net/problem/2578
빙고 게임은 다음과 같은 방식으로 이루어진다.
먼저 아래와 같이 25개의 칸으로 이루어진 빙고판에 1부터 25까지 자연수를 한 칸에 하나씩 쓴다.
우리가 아는 빙고입니다. 3줄되면 빙고!
빙고를 구현하면 됩니다. 3줄이 확인되면 그 순간 빙고가 완성되기 때문에 숫자를 부를 때매번
빙고가 완성되었는지 안되었는지 확인 해야합니다.
#include <bits/stdc++.h>
using namespace std;
int bingoBoard[5][5];
void makeBingoBoard()
{
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
{
cin >> bingoBoard[i][j];
}
}
bool IsBingo()
{
// 가로줄 검사
int cnt = 0;
for (int i = 0; i < 5; i++)
{
int sum = 0;
for (int j = 0; j < 5; j++)
sum += bingoBoard[i][j];
if (sum == 0)
cnt++;
}
// 세로줄 검사
for (int i = 0; i < 5; i++)
{
int sum = 0;
for (int j = 0; j < 5; j++)
{
sum += bingoBoard[j][i];
}
if (sum == 0)
cnt++;
}
// 대각선 검사
int sum = 0;
for (int i = 0; i < 5; i++)
sum += bingoBoard[i][i];
if (sum == 0)
cnt++;
sum = 0;
for (int i = 0; i < 5; i++)
{
sum += bingoBoard[4 - i][i];
}
if (sum == 0)
cnt++;
if (cnt >= 3)
return true;
else
return false;
}
void FindNumber(int num)
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (num == bingoBoard[i][j])
{
bingoBoard[i][j] = 0;
return;
}
}
}
}
int main()
{
makeBingoBoard();
int N;
for (int i = 0; i < 25; i++)
{
cin >> N;
FindNumber(N);
if (IsBingo())
{
cout << i + 1 << '\n';
break;
}
}
return 0;
}