백준/단계별로 풀어보기

백준 - 단계별로 풀어보기 - JAVA (9단계 : 2차원 배열 / 3문제) (2022.12.28 수)

MoveForward 2022. 12. 28. 14:51

1단계 : 2738번 / 행렬 덧셈

import java.util.Scanner;

public class Main{

    public static void main(String args[]){

        Scanner sc = new Scanner(System.in);
        // 행렬 크기 N * M 
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        // 행렬 A
        int[][] A = new int[N][M];
        for (int i=0; i<N; i++){
            for (int j=0; j<M; j++){
                A[i][j] = sc.nextInt();
            }
        }

        // 행렬 B
        int[][] B = new int[N][M];
        for (int i=0; i<N; i++){
            for (int j=0; j<M; j++){
                B[i][j] = sc.nextInt();
            }
        }

        // 행렬 C (A + B)
        int[][] C = new int[N][M];
        for (int i=0; i<N; i++){
            for (int j=0; j<M; j++){
                C[i][j] = A[i][j] + B[i][j];
            }
        }

        for (int i=0; i<N; i++){
            for (int j=0; j<M; j++){
                System.out.print(C[i][j]+" ");
            }
            System.out.println();
        }
        
    }

}

* 2차원 배열을 통해 행렬 구현


2단계 : 2566번 / 최댓값

import java.util.Scanner;

public class Main{

    public static void main(String args[]){

        Scanner sc = new Scanner(System.in);
        // 행렬 크기 N * M 
        int N = 9;
        int M = 9;
        
        // 행렬 A
        int[][] A = new int[N][M];
        for (int i=0; i<N; i++){
            for (int j=0; j<M; j++){
                A[i][j] = sc.nextInt();
            }
        }

        
        int max = -1; int x = -1; int y = -1;
        for (int i=0; i<N; i++){
            for (int j=0; j<M; j++){
                if (A[i][j] > max){
                    max = A[i][j];
                    x = i+1; y = j+1;
                }
            }
        }
        System.out.println(max);
        System.out.println(x+" "+y);

    }

}

 


3단계 : 2563번 / 색종이

import java.util.Scanner;

public class Main{

    public static void main(String args[]){

        Scanner sc = new Scanner(System.in);

        
        // 행렬 A (흰도화지)
        boolean[][] A = new boolean[101][101];
        // 흰 영역 : false / 검은 영역 : true

        int n = sc.nextInt(); // 색종이 수
        for (int i=0; i<n; i++){
            int x = sc.nextInt();
            int y = sc.nextInt();

            for (int j=x+1; j<=x+10; j++){
                for (int k=y+1; k<=y+10; k++){
                    A[j][k] = true;
                }
            }
        }

        int count = 0;
        for (int i=0; i<101; i++){
            for (int j=0; j<101; j++){
                if (A[i][j]){
                    count ++;
                }
            }
        }

        System.out.println(count);
    }

}

 

접근 방법 : 흰색 도화지에 검은 색종이가 붙은 부분 true로 표시하여 true인 원소의 수를 구한다.
 
예제 입력 구현

좌표 산정 방식