알고리즘/백준

[백준 / #2578] 빙고 (Java)

셩윤 2024. 2. 17. 19:53

문제 설명

2차원 배열에 내 빙고 판이랑 부르는 순서 다 저장해서 2중 for문으로만 돌게 됐습니다..

두번째 배열을 입력받으면서 바로 확인하면 더 깔끔할 것 같습니다.

0인거 확인하는 메서드랑 빙고인지 확인하는 메서드 따로 만들었습니다


문제풀이

package acmic;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class ac_2578 {
    public static int[][] my = new int[5][5];

    public static void find(int n) {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (n == my[i][j])
                    my[i][j] = 0;
            }
        }
    }

    public static int check() {
        int result = 0;
        for (int i = 0; i < 5; i++) {
            int count1 = 0;
            int count2 = 0;
            for (int j = 0; j < 5; j++) {
                if (my[i][j] == 0) {
                    count1++;
                }
                if (my[j][i] == 0) {
                    count2++;
                }
                if (count1 == 5) {
                    result++;
                }
                if (count2 == 5) {
                    result++;
                }
                if (result == 3)
                    return result;
            }
        }
        int count1 = 0;
        int count2 = 0;
        for (int i = 0; i < 5; i++) {
            if (my[i][i] == 0) {
                count1++;
            }
            if (my[4 - i][i] == 0) {
                count2++;
            }
        }
        if (count1 == 5)
            result++;
        if (count2 == 5)
            result++;
        return result;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int result = 0;
        int[][] ans = new int[5][5];
        for (int i = 0; i < 5; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j = 0; j < 5; j++) {
                my[i][j] = Integer.parseInt(st.nextToken());
            }
        }
        for (int i = 0; i < 5; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j = 0; j < 5; j++) {
                ans[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                find(ans[i][j]);
                result++;
                if (check() >= 3) {
                    System.out.println(result);
                    System.exit(1);
                }
            }
        }
    }
}