백준 12933 - 빙고
Updated:
Java
2578 번 - 빙고
문제
접근 방법
빙고를 만드는 구현 문제였다.
코드
import java.util.*;
import java.io.*;
public class Main {
static int n, result;
static int[][] board;
static boolean[][] vis;
static Set<String> bingos;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
board = new int[5][5];
vis = new boolean[5][5];
bingos = new HashSet<String>();
for(int i = 0; i < 5; i++) {
stk = new StringTokenizer(br.readLine());
for(int j = 0; j < 5; j++) {
board[i][j] = stoi(stk.nextToken());
}
}
int count = 1;
for(int i = 0; i < 5; i++) {
stk = new StringTokenizer(br.readLine());
for(int j = 0; j < 5; j++) {
chkBoard(stoi(stk.nextToken()));
if(chkBingo()) {
System.out.println(count);
br.close();
return;
}
count++;
}
}
br.close();
}
static void chkBoard(int num) {
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
if(board[i][j] == num) {
vis[i][j] = true;
}
}
}
}
static boolean chkBingo() {
int bingoCnt = 0;
// 가로 탐색
next: for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
if(!vis[i][j]) {
continue next;
}
}
// 한줄 빙고
bingoCnt++;
}
// 세로 탐색
next: for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
if(!vis[j][i]) {
continue next;
}
}
// 한줄 빙고
bingoCnt++;
}
// 대각선 탐색
if(vis[0][0] && vis[1][1] && vis[2][2] && vis[3][3] && vis[4][4]) {
bingoCnt++;
}
if(vis[0][4] && vis[1][3] && vis[2][2] && vis[3][1] && vis[4][0]) {
bingoCnt++;
}
if(bingoCnt >= 3)
return true;
else
return false;
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}