2026.04.12 일

권순찬·2026년 4월 12일

천천히 꾸준히

목록 보기
38/50

오늘의 문제!

배열놀이_17123

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

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

        int t = Integer.parseInt(br.readLine());
        while (t-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            int m = Integer.parseInt(st.nextToken());

            int[] rowSums = new int[n];
            int[] colSums = new int[n];

            for (int i = 0; i < n; i++) {
                st = new StringTokenizer(br.readLine());
                for (int j = 0; j < n; j++) {
                    int value = Integer.parseInt(st.nextToken());
                    rowSums[i] += value;
                    colSums[j] += value;
                }
            }

            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());

                int rowCnt = r2 - r1 + 1;
                int colCnt = c2 - c1 + 1;

                for (int r = r1; r <= r2; r++) {
                    rowSums[r] += v * colCnt;
                }
                for (int c = c1; c <= c2; c++) {
                    colSums[c] += v * rowCnt;
                }
            }

            for (int i = 0; i < n; i++) {
                bw.write(rowSums[i] + " ");
            }
            bw.write("\n");
            for (int i = 0; i < n; i++) {
                bw.write(colSums[i] + " ");
            }
            bw.write("\n");
        }
        bw.flush();
        bw.close();
    }
}

이번 문제는 다 더하고 나중에 구하면 시간초과가 걸릴만한 크기라, 매번 m만큼 입력받을때 바로바로 더해놓고 출력만 하면 되는 문제였다.


금-토 형네집에 놀러갔다왔는데,, 토요일날 정이든 일하고 사장님 친구분들하고 술을 마시는 바람에... 하루가 없어졌다...

이제부터 남은 5일.. 정처기에 매진해야겠다!

profile
아직 많이 서툰 개발자

0개의 댓글