BJ2578 빙고
https://www.acmicpc.net/problem/2578
빙고 게임을 진행하며, 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);
}
}
Author And Source
이 문제에 관하여(BJ2578 빙고), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mraz0210/BJ2578-빙고저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)