[C언어 코드업 문제풀이] CodeUp 1494 : [기초-배열연습] 1차원 차이 배열 만들기 5-3

코드업 1494번 1차원 차이 배열 만들기 5-3 문제 풀이 해답입니다.

 

1. 문제 설명

 

크기가 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

 

2. 입력

 

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

 

3. 출력

 

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

 

4. 입력 예시

 

7 4

1 2 1

2 3 1

3 4 1

4 5 1

 

5. 출력 예시

 

1 1 0 0 -1 -1 0

1 2 2 2 1 0 0 

 

6. 문제 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "stdio.h"
 
 
int main(void)
{
    int Arr[101= {};
    int size,course;
    int s,e,u;
    //d[s] = d[s]+u;
    //d[e+1] = d[e+1]-u;
    scanf("%d %d",&size,&course);
    for(int i = 1; i <= course; i++){
        scanf("%d %d %d",&s,&e,&u);
        Arr[s] = Arr[s] + u;
        Arr[e +1 ] = Arr[e + 1- u;
    }
    
    for(int i = 1; i <= size; i++){
        printf("%d ",Arr[i]);
     
    }
    printf("\n");
    int sum = 0;
    for(int i = 1; i <= size; i++){
        sum += Arr[i];
        printf("%d ",sum);
        
    }
    return 0;
}
 
 

댓글()