알고리즘 공부/문제 풀이
[JAVA] 백준 17123 배열 놀이
valid_ming
2021. 9. 22. 19:38
https://www.acmicpc.net/problem/17123
17123번: 배열 놀이
N개의 행과 N개의 열로 구성된 2차원 정수 배열 A가 있다. A[r, c]는 r번째 행 c번째 열에 위치한 원소의 값을 나타낸다. 이 배열에 총 M번의 연산을 적용하는 배열 놀이를 생각해보자. 각 연산에 대
www.acmicpc.net


풀이

코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while(T-->0){
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[][] arr = new int[N][N];
int[] rows = new int[N];
int[] cols = new int[N];
//arr 값 받아오기와 rows, cols 초기화
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine());
for(int j=0;j<N;j++){
int val = Integer.parseInt(st.nextToken());
arr[i][j] = val;
rows[i] += val;
cols[j] += val;
}
}
for(int i=0;i<M;i++){
st = new StringTokenizer(br.readLine());
int r1 = Integer.parseInt(st.nextToken())-1;
int c1 = Integer.parseInt(st.nextToken())-1;
int r2 = Integer.parseInt(st.nextToken())-1;
int c2 = Integer.parseInt(st.nextToken())-1;
int v = Integer.parseInt(st.nextToken());
for(int r=r1; r<=r2; r++){
rows[r] += (c2-c1+1)*v;
}
for(int c=c1; c<=c2; c++){
cols[c] += (r2-r1+1)*v;
}
}
for(int i=0;i<N;i++) sb.append(rows[i]+" ");
sb.append('\n');
for(int i=0;i<N;i++) sb.append(cols[i]+" ");
sb.append('\n');
}
System.out.println(sb);
}
}