✏️ 문제 1
- 빙고판 크기를 입력 받아, 그 크기 만큼의 행과 열을 가지는 2차원 배열(빙고판)을 생성하고
1부터 크기*크기 사이의 정수 난수를 무작위 배치.
- 정수를 입력 받아 빙고판에서 일치하는 부분을 찾아 해당 부분의 숫자를 “★“로 변경하고
현재 빙고 카운트가 몇인지 출력.
단, 빙고판에 없는 정수를 입력한 경우 “다시 입력해주세요.“ 출력
- 가로, 세로, 대각선 한 줄이 모두 “★“로 변경되어 있을 경우 빙고 카운트를 1 증가
- 빙고카운트가 3이상이 되면 “Bingo!” 를 출력하고 프로그램 종료.
풀이
public void startBingo() {
Scanner sc = new Scanner(System.in);
System.out.print("빙고판 크기 지정 : ");
int num = sc.nextInt();
sc.nextLine();
int[] tempArr = new int[num*num];
for(int i=0; i<tempArr.length; i++) {
tempArr[i] = (int)(Math.random()*(num*num)) + 1;
for(int j=0; j<i; j++) {
if(tempArr[i] == tempArr[j]) {
i--;
break;
}
}
}
String[][] bingoBoard = new String[num][num];
int index = 0;
for(int i=0; i<num; i++) {
for(int j=0; j<num; j++) {
bingoBoard[i][j] = tempArr[index] + "";
index++;
}
}
for(int i=0; i<bingoBoard.length; i++) {
for(int j=0; j<bingoBoard[0].length; j++) {
System.out.printf("%4s", bingoBoard[i][j]);
}
System.out.println();
}
System.out.println("============빙고게임 시작============");
while(true) {
System.out.print("정수를 입력하시오 : ");
String input = sc.nextLine();
boolean flag = true;
for(int i=0; i<bingoBoard.length; i++) {
for(int j=0; j<bingoBoard[0].length; j++) {
if(bingoBoard[i][j].equals(input)) {
bingoBoard[i][j] = "★";
flag = false;
}
System.out.printf("%4s", bingoBoard[i][j]);
}
System.out.println();
}
if(flag) {
System.out.println("잘못 입력하셨습니다. 다시 입력하세요.");
continue;
}
String bingoLine = "";
for(int i=0; i<num; i++) {
bingoLine += "★";
}
int bingoCount = 0;
for(int i=0; i<bingoBoard.length; i++) {
String row = "";
String col = "";
for(int j=0; j<bingoBoard.length; j++) {
row += bingoBoard[i][j];
col += bingoBoard[j][i];
}
if(row.equals(bingoLine)) {
bingoCount++;
}
if(col.equals(bingoLine)) {
bingoCount++;
}
}
String dia1 = "";
String dia2 = "";
for(int i=0; i<bingoBoard.length; i++) {
dia1 += bingoBoard[i][i];
dia2 += bingoBoard[bingoBoard.length -1 -i][i];
}
if(dia1.equals(bingoLine)) {
bingoCount++;
}
if(dia2.equals(bingoLine)) {
bingoCount++;
}
System.out.println("현재 " + bingoCount + "빙고");
if(bingoCount >= 3) {
System.out.println("***Bingo!***");
break;
}
}