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 |