백준 빙고
이문제는 처음에 입력값으로 10 5를 의 값을 주었다. 처음 5 5는 지금 빙고판 그다음 5 5는 차례대로 25개를 부른 정답인 값 그래서 나는 생각했다. 처음 5 5는 arr 2차원 배열안에 값을 담고 그다음 5 * 5 배열은 answer 2차원 배열에 담아서 answer안에 있는 값을 하나씩 확인하면서 arr안에 있는 값과 일치하면 arr값을 -1로 바꿔 주었다. 그래서 빙고가 될수있는 가로 세로 좌상우하, 우상좌하 이 4가지 경우를 for문을 돌면서 -1이 5개이면 bingo를 더해주고 bingo가 3개이면 몇번째에 빙고가 되었는지 값을 만들고 그값을 출력해서 해결하였다. 이렇게 말로 하면 이해가 안되니 그림을 하나 준비했다.
import java.util.Scanner;
public class Main{
public static void main(String[] args){
// Please Enter Your Code Here
Scanner s = new Scanner(System.in);
int[][] arr = new int[5][5];
int[][] answer = new int[5][5];
int num;
int cnt;
int con;
int bingo;
int cnt2 = 0;
int result = 0;
for (int i=0;i<10;i++){
for (int j=0;j<5;j++){
num = s.nextInt();
if (i < 5){
arr[i][j] = num;
}
if (i >= 5) answer[i-5][j] = num;
}
}
for (int i=0;i<5;i++){
for (int j=0;j<5;j++){
con = answer[i][j];
if (result == 1) break;
bingo = 0;
cnt2++;
for (int k=0;k<5;k++){
for (int l=0;l<5;l++){
if (con == arr[k][l]){
arr[k][l] = -1;
}
}
}
//가로
for (int k=0;k<5;k++){
cnt = 0;
for (int l=0;l<5;l++){
if (arr[k][l] == -1) cnt++;
if (cnt == 5) bingo++;
}
}
//세로
for (int k=0;k<5;k++){
cnt = 0;
for (int l=0;l<5;l++){
if (arr[l][k] == -1) cnt++;
if (cnt == 5) bingo++;
}
}
//좌상우하
cnt = 0;
for (int k=0;k<5;k++){
if (arr[k][k] == -1) cnt++;
if (cnt == 5) bingo++;
}
//우상좌하
cnt = 0;
for (int k=0;k<5;k++){
if (arr[0+k][4-k] == -1) cnt++;
if (cnt == 5) bingo++;
}
if (bingo >= 3){
result +=1;
break;
}
}
}
System.out.println(cnt2);
}
}