사용자로부터 빙고판의 크기를 입력 받아 지정된 수의 가로 × 세로 빙고판에 1부터 가로 × 세로의 값까지의 수를 랜덤하게 발생시켜 빙고판을 만드시오. 다만 중복되는 수는 없어야 하며, 숫자를 선택하면 해당 칸이 0으로 바뀌고 3줄이 빙고가 되면(가로, 세로, 대각선 모두 포함) 프로그램을 종료하시오.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("빙고판 크기 지정 : ");
int num = sc.nextInt();
int arr[] = new int[num * num];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * arr.length) + 1;
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;
break;
}
}
}
int bingo[][] = new int[num][num];
int index = 0;
System.out.println("======= 빙고 게임 시작 =======");
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
bingo[i][j] = arr[index++];
System.out.print(bingo[i][j] + "\t");
}
System.out.println();
}
while (true) {
System.out.print("숫자 선택 : ");
int drop = sc.nextInt();
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
if (bingo[i][j] == drop)
bingo[i][j] = 0;
System.out.print(bingo[i][j] + "\t");
}
System.out.println();
}
int left = 0;
int right = 0;
int count = 0;
for (int i = 0; i < num; i++) {
int row = 0;
int col = 0;
for (int j = 0; j < num; j++) {
if (bingo[i][j] == 0) row++;
if (bingo[j][i] == 0) col++;
if (i == j && bingo[i][j] == 0) left++;
if ((i + j) == num - 1 && bingo[i][j] == 0) right++;
}
if (row == num) count++;
if (col == num) count++;
}
if (left == num) count++;
if (right == num) count++;
if (count >= 3) break;
}
System.out.println("======= 빙고 게임 종료 =======");
sc.close();
}
}