카테고리 없음

[백준 자바] 2578번 : 빙고

선예림 2023. 3. 29. 16:50
import java.io.IOException;
import java.util.Scanner;
import java.util.*;
// 빙고
public class ex2578 {
    static int[][] bingo;
    static int count; // 빙고 개수 세는 변수
    public static void main(String[] args) throws IOException {

        Scanner sc = new Scanner(System.in);
        bingo = new int[5][5];
        count = 0;

        // 빙고판 입력
        for(int i = 0; i < 5; i++) {
            for(int j = 0; j < 5; j++) {
                bingo[i][j] = sc.nextInt();
            }
        }

        // 사회자가 부르는 숫자
        for(int k = 1; k <= 25; k++) {
            int num = sc.nextInt();

            for(int i = 0; i < 5; i++) {
                for(int j = 0; j < 5; j++) {
                    if(bingo[i][j] == num)  // 사회자가 부른 숫자랑 같으면 0으로 바꾸기
                        bingo[i][j] = 0;
                }
            }
            rCheck();
            cCheck();
            lrCheck();
            rlCheck();


            if(count >= 3) {    // 3줄 이상 빙고이면 몇 번째 숫자인지 출력하고 종료
                System.out.println();
                System.out.println(k);
                break;
            }
            count = 0;
        }


    }

    // 가로 빙고 체크
    public static void rCheck() {
        for(int i = 0; i < 5; i++) {
            int zeroCount = 0;
            for(int j = 0; j < 5; j++) {
                if(bingo[i][j] == 0)
                    zeroCount++;
            }
            if(zeroCount == 5)
                count++;
        }
    }

    // 세로 빙고 체크
    public static void cCheck() {
        for(int i = 0; i < 5; i++) {
            int zeroCount = 0;
            for(int j = 0; j < 5; j++) {
                if(bingo[j][i] == 0)
                    zeroCount++;
            }
            if(zeroCount == 5)
                count++;
        }
    }

    // 왼쪽에서 오른쪽으로 그어지는 대각선 빙고 체크
    public static void lrCheck() {
        int zeroCount = 0;
        for(int i = 0; i < 5; i++) {
            if(bingo[i][i] == 0)
                zeroCount++;
        }
        if(zeroCount == 5)
            count++;
    }

    // 오른쪽에서 왼쪽으로 그어지는 대각선 빙고 체크
    public static void rlCheck() {
        int zeroCount = 0;
        for(int i = 0; i < 5; i++) {
            if(bingo[i][4-i] == 0)
                zeroCount++;
        }
        if(zeroCount == 5)
            count++;
    }
}