static int[][] map = new int[5][5]; // 빙고판
static int num; // 사회자가 몇 번째 수를 불렀는지 체크하는 변수
static int count; // 빙고의 갯수
먼저 5x5의 빙고판을 만드는 이차원 배열, 사회자가 몇 번째 수를 불렀는지 저장할 변수, 빙고의 갯수를 저장할 변수를 만든다.
for(int i =0; i < 5; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j = 0; j < 5; j++){
map[i][j] = Intger.parseInt(st.netxToken());
}
}
반복문을 이용하여 빙고판을 채운다.
for(int i = 0; i < 5; i++){
StringTokenizer st = new StiringTokenizer(br.readLine());
for(int j = 0; j < 5; j++){
num++;
binggo(Intger.psrseInt(st.nextToken()));
bingoCheck();
if(count => 3){
return;
}
}
}
사회자가 숫자를 발표하는 반복문이다. 빙고 카운트가 3보다 크거나 같은경우 메서드를 종료한다.
public static void binggo(int n){
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
if(map[i][j] == n){
map[i][j] = -1;
}
}
}
}
public static void bingoCheck(){
count = 0;
int row; 가로줄
int col; 세로줄
int xy = 0; 우측 대각
int tx = 0; 좌측 대각
int index = 0; // 대각선 위치를 확인시 사용하는 변수
for(int i = 0; i < 5; i++){
row = 0;
col = 0;
for(int j = 0; j < 5; j++){
row += map[i][j];
col += map[j][i];
if(i ==j){
xy += map[i][j]
}
if(i == index && j == 4 - index){
yx += map[j][i];
index++;
}
}
if (row == -5) {
count++;
}
if (col == -5) {
count++;
}
if (xy == -5) {
count++;
}
if (yx == -5) {
count++;
}
}
}
사회자가 부른 숫자는 빙고판에서 -1로 변경하여 다시 불리는 것을 방지한다.
각줄의 합을 구했을시 -5라면 빙고카운트를 1씩 상승한다.
일단 용도가 다르다.
i는 빙고 보드의 행을 반복한다.
index는 빙고 보드의 두 번째 대각선에 있는 셀의 열 인덱스를 추적하며 두번째 대각선에 대한 조건을 충족했을때만 값이 상승한다.