BJ 2578ビンゴ
26709 ワード
https://www.acmicpc.net/problem/2578
Bingoゲームを行い、3つ以上の行が完了すると、司会者が呼び出す数字を出力すればよい.
ビンゴ条件を検証する関数を体現すればよい.
Bingoゲームを行い、3つ以上の行が完了すると、司会者が呼び出す数字を出力すればよい.
ビンゴ条件を検証する関数を体現すればよい.
package day0210;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Bingo {
static BufferedReader br;
static StringTokenizer st;
static int[][] map = new int[5][5];
static boolean[][] check = new boolean[5][5];
static boolean[] hor = new boolean[5]; // 가로
static boolean[] ver = new boolean[5]; // 세로
static boolean[] dia = new boolean[2]; // 대각
static int countBingo() {
checkBingo();
int count = 0;
for (int i = 0; i < 5; i++) {
if (hor[i])
count++;
}
for (int i = 0; i < 5; i++) {
if (ver[i])
count++;
}
for (int i = 0; i < 2; i++) {
if (dia[i])
count++;
}
return count;
}
static void checkBingo() {
for (int j = 0; j < 5; j++) {
if (!hor[j]) {
hor[j] = true;
for (int i = 0; i < 5; i++) {
if (!check[j][i]) {
hor[j] = false;
break;
}
}
}
}
for (int j = 0; j < 5; j++) {
if (!ver[j]) {
ver[j] = true;
for (int i = 0; i < 5; i++) {
if (!check[i][j]) {
ver[j] = false;
break;
}
}
}
}
if (!dia[0]) {
dia[0] = true;
for (int i = 0; i < 5; i++) {
if (!check[i][i]) {
dia[0] = false;
break;
}
}
}
if (!dia[1]) {
dia[1] = true;
for (int i = 0; i < 5; i++) {
if (!check[i][4 - i]) {
dia[1] = false;
break;
}
}
}
}
static void findNumber(int tmp) {
for (int i = 0; i < 5; i++) {
boolean found = false;
for (int j = 0; j < 5; j++) {
if (map[i][j] == tmp) {
check[i][j] = true;
found = true;
break;
}
}
if (found) { // 찾으면 탐색 멈춤.
break;
}
}
}
public static void main(String[] args) throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
int answer = 0;
for (int i = 0; i < 5; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < 5; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
for (int i = 0; i < 5; i++) {
boolean found = false;
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < 5; j++) {
int tmp = Integer.parseInt(st.nextToken());
findNumber(tmp);
if (countBingo() >= 3) {
found = true;
answer = i * 5 + j + 1;
break;
}
}
if(found) break;
}
System.out.println(answer);
}
}
Reference
この問題について(BJ 2578ビンゴ), 我々は、より多くの情報をここで見つけました https://velog.io/@mraz0210/BJ2578-빙고テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol