[Java] 백준 11660번 - 구간 합 구하기 5

2023. 7. 7. 20:53·백준

문제 링크 : 백준 11660번 - 구간 합 구하기 5 자바

 

구간 합 구하기 4(블로그 글 연결) 문제를 먼저 풀고오세요.

 

(1) 합배열 채우기 : 1행 1열을 먼저 계산한 후, 대각선으로 맞추어 계산 (사진 참고, 대각선을 채우려면 1행 1열을 먼저 계산할 필요가 있기 때문)

(2) 구간합 구하기 : (전체-구하는 구간합의 나머지)방식으로 계산하면 구간합을 계산할 수 있다. 최종 합배열 계산 시 숫자 1이 아니라 x1-1 (예제에선 2-1이어서 1임)등임에 유의하여 구현

구현 시 배열 인덱스에 주의하여 구현한다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] nm = br.readLine().split(" ");
        int N = Integer.parseInt(nm[0]);
        int M = Integer.parseInt(nm[1]);
        int[][] input = new int[N][N];
        for (int i = 0; i < N; i++) {
            input[i] = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        }

        long[][] sum = new long[N+1][N+1];
        for (int i = 1; i <= N; i++) {
            sum[i][1] = sum[i-1][1] + input[i-1][0];
            sum[1][i] = sum[1][i-1] + input[0][i-1];
        }
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N; j++) {
                sum[i][j] = sum[i-1][j] + sum[i][j-1] + input[i-1][j-1] - sum[i-1][j-1];
            }
        }

        for (int i = 0; i < M; i++) {
            int[] xy = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
            int x1 = xy[0];
            int y1 = xy[1];
            int x2 = xy[2];
            int y2 = xy[3];
            System.out.println(sum[x2][y2] - (sum[x1-1][y2] + sum[x2][y1-1] - sum[x1-1][y1-1]));
        }
    }
}

'백준' 카테고리의 다른 글

[Java] 백준 2018번 - 수들의 합 5  (0) 2023.07.10
[Java] 백준 10986번 - 나머지 합  (0) 2023.07.07
[Java] 백준 11659번 - 구간 합 구하기 4  (0) 2023.07.07
[Java] 백준 2839번 - 설탕 배달  (0) 2023.07.05
[Java] 백준 1436번 - 영화감독 숌  (0) 2023.07.05
'백준' 카테고리의 다른 글
  • [Java] 백준 2018번 - 수들의 합 5
  • [Java] 백준 10986번 - 나머지 합
  • [Java] 백준 11659번 - 구간 합 구하기 4
  • [Java] 백준 2839번 - 설탕 배달
효재감자
효재감자
  • 효재감자
    효재감자의 우당탕탕 개발일지
    효재감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • 아무거나 (3)
      • 백준 (44)
      • 알고리즘 (4)
      • 자바 (1)
      • 리눅스(우분투) 및 클라우드 (2)
      • 스프링 (14)
        • 스프링 시큐리티 인 액션 (도서 정리) (5)
      • 플러터(Dart) (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
효재감자
[Java] 백준 11660번 - 구간 합 구하기 5
상단으로

티스토리툴바