빙고

재피터노트북·2022년 9월 28일
0

백준 빙고

문제

풀이 방법

이문제는 처음에 입력값으로 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);

    }
}
profile
난 이 재 선

0개의 댓글