[알고리즘]/알고리즘

[알고리즘] 백준 16967번 : 배열 복원하기 (실버3)

쿠릉쿠릉 쾅쾅 2022. 4. 18. 15:36
728x90

 

문제

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

 

📌 알고리즘 풀이

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

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 H = Integer.parseInt(st.nextToken());
		int W = Integer.parseInt(st.nextToken());
		int X = Integer.parseInt(st.nextToken());
		int Y = Integer.parseInt(st.nextToken());
		
		int[][] B = new int[H+X][W+Y];
		
		for(int i=0; i<H+X; i++) {
			StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
			
			for(int k=0; k<W+Y; k++) {
				B[i][k] = Integer.parseInt(st2.nextToken());
			}
		}
		
		// 임시 A 배열 정의
		int[][] tempArr = new int[H][W];
		
		for(int i=0; i<H; i++) {
			for(int k=0; k<W; k++) {
				tempArr[i][k] = B[i][k];
			}
		}
		

		// 겹치는 부분을 계산한다.
		for(int i=X; i<H; i++) {  // 
			for(int k=Y; k<W; k++) {
				tempArr[i][k] = B[i][k] - tempArr[i-X][k-Y];
			}
		}
		
		StringBuilder sb = new StringBuilder();
		
		for(int i=0; i<H; i++) {
			for(int k=0; k<W; k++) {
				sb.append(tempArr[i][k]).append(" ");
			}
			sb.append("\n");
		}
		
		System.out.println(sb);
	}
}

 

 

728x90