자료구조 & 알고리즘/BOJ

[java] 백준 16967번 문제(배열 복원하기)

seungwook_TIL 2025. 3. 20. 11:45

원본 링크 : https://www.acmicpc.net/problem/16967


문제설명

 

소스코드

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

public class Boj_16967
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // H, W, X, Y를 받아옴
        StringTokenizer st = new StringTokenizer(br.readLine());
        int h = Integer.parseInt(st.nextToken());
        int w = Integer.parseInt(st.nextToken());
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());

        // 배열 B를 받아옴
        int[][] arr = new int[h + x][w + y];
        for(int i = 0; i < h + x; ++i)
        {
            st = new StringTokenizer(br.readLine());
            for(int j = 0; j < w + y; ++j) arr[i][j] = Integer.parseInt(st.nextToken());
        }

        // 배열 B의 (0,0) ~ (W,H) 구역을 배열 A로 원상복구 시키는 루프
        for(int i = 0; i < h; ++i)
        {
            for(int j = 0; j < w; ++j)
            {
                if((i >= x) && (j >= y)) arr[i][j] -= arr[i - x][j - y]; // 겹쳐진 구역이라면 원상복구 시킴
                bw.write(arr[i][j] + " ");
            }
            bw.write(System.lineSeparator());
        }
        bw.flush();
    }
}

 

설명