728x90
문제
https://www.acmicpc.net/problem/2578
풀이
for문 안에서 인덱싱에 주의하면서 각 행마다, 각 열마다, 대각선 2개까지 빙고를 체크해주면 됨
주의할 점은 사회자가 부르는 수로 인해서 한번에 빙고가 2개가 생기는 경우가 있을 수도 있기 때문에 마지막에
bingoCount == 3 이 아닌 bingoCount >= 3 으로 해줘야함!
코드
// 2578번 빙고
// https://www.acmicpc.net/problem/2578
package BAEKJOON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Num2578_빙고 {
static int[][] map;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
map = new int[5][5];
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());
}
}
int[] arr = new int[26];
st = new StringTokenizer(br.readLine());
for (int i = 1; i <= 25; i++) {
if (!st.hasMoreTokens()) {
st = new StringTokenizer(br.readLine());
}
arr[i] = Integer.parseInt(st.nextToken());
}
for (int b = 1; b <= 25; b++) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (map[i][j] == arr[b]) {
map[i][j] = 0;
}
}
}
if (check(map)) {
System.out.println(b);
break;
}
}
}
public static boolean check(int[][] map) {
int bingoCount = 0;
// 각 행
for (int i = 0; i < map.length; i++) {
int count = 0;
for (int j = 0; j < map[i].length; j++) {
if (map[i][j] == 0) {
count++;
}
}
if (count == 5) {
bingoCount++;
}
}
// 각 열
for (int i = 0; i < map.length; i++) {
int count = 0;
for (int j = 0; j < map[i].length; j++) {
if (map[j][i] == 0) {
count++;
}
}
if (count == 5) {
bingoCount++;
}
}
// 왼쪽 위에서 오른쪽 아래 대각선
int count = 0;
for (int i = 0; i < map.length; i++) {
count = 0;
if (map[i][i] == 0) {
count++;
}
if (count == 5) {
bingoCount++;
}
}
// 오른쪽 위에서 왼쪽 아래 대각선
count = 0;
for (int i = 0; i < map.length; i++) {
if (map[map.length - 1 - i][i] == 0) {
count++;
}
if (count == 5) {
bingoCount++;
}
}
// 하나로 빙고가 2개가 더 생기는 경우가 있기 때문에
// bingoCount == 3 이 아닌 >= 3 으로 해줘야함
if (bingoCount >= 3) {
return true;
} else {
return false;
}
}
}
728x90