코딩테스트/백준

[백준 JAVA] 2738 - 행렬 덧셈

kittae 2024. 11. 27. 01:40

2차원 배열 문제를 처음 접근하기 좋은 쉬운 문제였다.

 

구현 자체는 매우 쉬웠지만, 나는 문제를 잘 이해하지 못해 해석에 대한 시간이 약간 있었다.

또한 Stringtokenizer의 활용 정도?? 면 매우 쉽게 풀 수 있는 문제일 거라 생각한다.

 

해당 문제 로직이 쉽기 때문에 시간제한과 메모리 제한은 신경 안써도 된다고 판단했다.

 

내가 생각한 구현 로직은 이렇다.

n * m 크기니깐 arr[n][m]
A와 B행렬이 고정되어있음. 두 행렬을 for문으로 출력하고 합친 값을 배열에 넣어서 출력

 

[최종 코드]

import java.io.*;
import java.util.*;

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        int[][] arr1 = new int[n][m];
        int[][] arr2 = new int[n][m];
        int[][] sumarr = new int[n][m];

        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            for (int j = 0; j < m; j++)
                arr1[i][j] = Integer.parseInt(st.nextToken());
        }

        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            for (int j = 0; j < m; j++)
                arr2[i][j] = Integer.parseInt(st.nextToken());
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                sumarr[i][j] = arr1[i][j] + arr2[i][j];
                System.out.print(sumarr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

 

나는 코드 간결화를 위해 sumarr에 값을 더하고나서 바로 해당 값을 출력했다!

 

배운점

Stringtokenizer를 더 잘 활용할 수 있게 배운 것 같다.

또한 문제 해석에 대해 더 신경을 써야될 거 같다!