콩부방

1494 : [기초-배열연습] 1차원 차이 배열 만들기 5-3 본문

알고리즘 공부/CodeUp

1494 : [기초-배열연습] 1차원 차이 배열 만들기 5-3

콩이아부지이 2021. 9. 14. 21:44
728x90

크기가 n인 1차원 배열 d[]에 대해

k개의 구간 [s, e]와 u를 입력 받아,

d[s] = d[s]+u;
d[e+1] = d[e+1]-u;

를 수행한 후, 누적 합을 만들어 출력해보자.

크기가 7이고,

4개의 구간 데이터
1 2 1
2 3 1
3 4 1
4 5 1

가 입력되면

1차원 배열의 상태는 
1 1 0 0 –1 –1 0
가 되며

그 누적합을 계산하면 아래와 같다.
1 2 2 2 1 0 0

입력

첫 번째 줄에 배열의 크기 n과 구간의 개수 k가 공백을 두고 입력된다.
두 번째 줄부터 k개의 데이터가 공백을 두고 입력된다.
[입력값의 정의역]
1 <= k <= n <= 100
0 < s <= e < n
-1000 <= u <= 1000

출력

첫 번째 줄에는 배열의 상태를 출력한다.
두 번째 줄에는 누적합을 계산해 출력한다.

입력 예시   예시 복사

7 4

1 2 1

2 3 1

3 4 1

4 5 1

출력 예시

1 1 0 0 -1 -1 0

1 2 2 2 1 0 0

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		int[] d = new int[101];
		int s=0,e=0,u=0;
		int sum = 0;
		for (int i = 0; i < k; i++) {
			s =sc.nextInt();
			e =sc.nextInt();
			u =sc.nextInt();
			d[s] = d[s]+u;
			d[e+1] = d[e+1]-u;
		}
		for (int i = 1; i < n+1; i++) {
			System.out.print(d[i]+" ");
		}
		System.out.println();
		for (int i = 1; i < n+1; i++) {
			sum +=d[i];
			System.out.print(sum+" ");
		}
	}//main end 
}
728x90
Comments