백준 - JAVA

2578번 - 빙고

uhyvn 2023. 8. 7. 16:06

 

https://www.acmicpc.net/problem/2578

 

 

2578번: 빙고

첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로

www.acmicpc.net

 


 

 

- 문제

 

 

- 예제

 

 


 

 

- 코드

 

import java.util.Scanner;

public class p2578 {

    static int[][] arr;
    static int bingo;
    static int sum;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        arr = new int[5][5]; // 빙고판 생성

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

        for (int i = 0; i < 25; i++) {
            int v = sc.nextInt();

            for (int j = 0; j < 5; j++) {
                for (int k = 0; k < 5; k++) {
                    if (arr[j][k] == v) arr[j][k] = 0; // 사회자가 불러준 값의 위치를 0으로 변경
                }
            }

            x(v); // 가로 빙고 확인
            y(v); // 세로 빙고 확인
            if (arr[0][0] + arr[1][1] + arr[2][2] + arr[3][3] + arr[4][4] == 0) bingo++;
            if (arr[0][4] + arr[1][3] + arr[2][2] + arr[3][1] + arr[4][0] == 0) bingo++;
			// 두 대각선 빙고 확인

			// 만약 3줄 *이상* 나왔다면 출력 - 2줄인 상태에서 한 숫자로 4줄이 될 수 있음.
            if (bingo >= 3) {
                System.out.println(i + 1);
                break;
            }
            bingo = 0;
        }
    }

	// 가로 빙고 확인
    public static void x(int v) {
        for (int i = 0; i < 5; i++) {
            sum = 0;
            for (int j = 0; j < 5; j++) {
                sum += arr[i][j];
            }
            if (sum == 0) bingo++;
        }
    }

	// 세로 빙고 확인
    public static void y(int v) {
        for (int i = 0; i < 5; i++) {
            sum = 0;
            for (int j = 0; j < 5; j++) {
                sum += arr[j][i];
            }
            if (sum == 0) bingo++;
        }
    }
}

'백준 - JAVA' 카테고리의 다른 글

2231번 : 분해합  (0) 2023.08.16
15649번 : N과 M (1)  (0) 2023.08.10
5568번 - 카드 놓기  (0) 2023.08.09
20546번 - 기적의 매매법  (0) 2023.08.07
2884번 - 알람 시계  (0) 2023.08.02