문제1136--[기초-배열연습] 2차원 차이 배열 만들기(C)

1136: [기초-배열연습] 2차원 차이 배열 만들기(C)

[만든사람 : 전현석, 정종광(확인), 배준호(확인) (2016)]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

본 문제는 C 의 빠른 기초 학습을 위해 설계된 문제로서 C 코드 제출을 기준으로 설명되어 있습니다.
------

크기가 n*m인 2차원 배열 d[][]에 대해

k개의 구간 [(x1, y1), (x2, y2)] 와 u를 입력 받아,

d[x1][y1] = d[x1][y1]+u;
d[x2+1][y2+1] = d[x2+1][y2+1]+u;

d[x1][y2+1] = d[x1][y2+1]-u;
d[x2+1][y1] = d[x2+1][y1]-u;

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

크기가 7*7이고,

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

가 입력되면

2차원 배열의 상태는
1 0 -1 0 0 0 0
0 1 0 -1 0 0 0
-1 0 2 0 -1 0 0
0 -1 0 2 0 -1 0
0 0 -1 0 1 0 0
0 0 0 -1 0 1 0
0 0 0 0 0 0 0

가 되며

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

1 1 0 0 0 0 0
1 2 1 0 0 0 0
0 1 2 1 0 0 0
0 0 1 2 1 0 0
0 0 0 1 1 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

입력 설명

첫 번째 줄에 배열의 크기 n, m과 구간의 개수 k가 공백으로 구분되어 입력된다.
두 번째 줄부터 k개의 데이터가 공백으로 구분되어 입력된다.
(1<=n,m<=1000, 1<=k<=100, 1<=x1<=x2<=n, 1<=y1<=y2<=m, -1000<=u<=1000)

출력 설명

n*m 배열의 상태를 출력한 후,
줄을 바꿔 2차원 누적합을 계산해 출력한다.

입력 예시 Copy

7 7 4
1 1 2 2 1
2 2 3 3 1
3 3 4 4 1
4 4 5 5 1

출력 예시 Copy

1 0 -1 0 0 0 0
0 1 0 -1 0 0 0
-1 0 2 0 -1 0 0
0 -1 0 2 0 -1 0
0 0 -1 0 1 0 0
0 0 0 -1 0 1 0
0 0 0 0 0 0 0

1 1 0 0 0 0 0
1 2 1 0 0 0 0
0 1 2 1 0 0 0
0 0 1 2 1 0 0
0 0 0 1 1 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0 

도움

기초100제(c)2 v1.0 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.

출처/분류