Java/Java 알고리즘

백준 14492번 부울행렬의 부울곱 JAVA 구현해보기

kimc 2022. 2. 3. 22:50

```

백준 14492번 부울 행렬의 부울곱 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1.  백준 14492번 풀이

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

 

14492번: 부울행렬의 부울곱

문제를 출제하던 욱제는 갑자기 괴랄한 문제를 내고 싶어졌다. 불행하게도, 이번 대회에는 프로그래밍 뉴비들이 많기 때문에 그럴 수는 없었다. 하지만 욱제는 신입생들을 괴롭히고픈 욕망을

www.acmicpc.net

 

백준 14492번 부울행렬의 부울곱은

난이도 실버 등급의 문제로서

 

두 Bool 행렬을 곱해서 나온 Bool 행렬의 True 값을 더해서 출력하면 되는 문제입니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


 

두 Bool 행렬을 곱해서 곱한 행렬의 True 값을 더해 출력하였습니다.

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {

        int n = Integer.parseInt(br.readLine());

        boolean[][] arr1 = initArr(n);
        boolean[][] arr2 = initArr(n);
        boolean[][] arr3 = boolArrMultiplication(n, arr1, arr2);
    }

    private static boolean[][] boolArrMultiplication(int arrSize, boolean[][] arr1, boolean[][] arr2) {
        boolean[][] arr = new boolean[arrSize][arrSize];
        int count = 0;
        for (int i =0; i<arrSize;i++){
            for (int j =0; j<arrSize;j++){
                arr[i][j] = false;
                for (int k =0; k<arrSize;k++){
                    if(arr1[i][k] == true && arr2[k][j] == true){
                        arr[i][j] = true;
                        count++;
                        k = arrSize;
                    }
                }
            }
        }
        System.out.println(count);
        return arr;
    }

    static boolean[][] initArr(int arrSize) throws IOException {
        boolean[][] arr = new boolean[arrSize][arrSize];
        for (int i = 0; i < arrSize; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int j = 0;
            while (st.hasMoreTokens()) {
                if (st.nextToken().equals("0")) {
                    arr[i][j] = false;
                } else {
                    arr[i][j] = true;
                }
                j++;
            }
        }
        return arr;
    }

}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90