728x90
문제
세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다.
이 배열의 각 칸에 들어있는 수는 1 초에 한 번 씩 자기 자신을 복사해서 x, y좌표와의 거리가 1이상 k이하인 칸들에 더해준다. 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다.
t 초가 지난 후 배열의 상태를 출력하여라. 중간 계산 과정과 최종 결과의 모든 수는 int 로 표현 가능함이 보장된다.
입력
첫 줄에 N, M, k 가 주어진다.
두 번째 줄부터 N 줄에 걸쳐 배열의 값이 주어진다.
마지막 줄에 t 가 주어진다.
(1 ≤ N, M ≤ 5, 1 ≤ k ≤ 4, 1 ≤ 배열의 값 ≤ 10, 1 ≤ t ≤ 3)
출력
t 초 후 배열을 출력한다.
입력의 예 1
3 4 2
5 1 3 4
2 5 1 2
7 8 3 1
2
출력의 예 1
172 212 204 133
206 279 257 171
177 232 217 138
입력의 예 2
3 3 1
2 4 2
4 2 4
2 4 2
3
출력의 예 2
126 166 126
166 250 166
126 166 126
입력의 예 3
2 5 2
1 0 1 0 1
0 1 0 1 0
5
출력의 예 3
4693 6930 7976 6930 4693
4689 6931 7968 6931 4689
입력의 예 4
3 4 1
7 8 1 2
6 9 7 5
8 8 3 8
10
출력의 예 4
4381720 6997542 6881404 4197186
6212937 9918239 9758514 5949716
4402841 7031994 6916199 4218862
#코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
import sys
# 이 배열의 각 칸에 들어있는 수는 1 초에 한 번 씩 자기 자신을 복사해서 x, y좌표와의 거리가 1이상 k이하인 칸들에 더해준다.
# 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다
# 절댓값 함수
def abs(x):
if x > 0: return x
else: return -x
def spread(row, col):
global n, m, k, arr, getArr
sum = 0
for i in range((row-k), (row+k)+1):
if i < 1 or i > n: continue
for j in range((col-k), (col+k)+1):
if j < 1 or j > m: continue
if i==row and j==col: continue
# print(i, j)
dist = abs(row-i) + abs(col-j)
if dist >= 1 and dist <= k:
sum += arr[i][j]
sum += arr[row][col]
getArr[row-1][col-1] = sum
def doit():
global n, m, k, arr, getArr
for row in range(1, n+1):
for col in range(1, m+1):
spread(row, col)
def upgrade_frame():
global n, m, k, arr, getArr
for i in range(n):
for j in range(m):
arr[i+1][j+1] = getArr[i][j]
if __name__ == "__main__":
input = sys.stdin.readline
n, m, k = map(int, input().split())
arr = [[0]*(m+2) for _ in range(n+2)]
getArr = [list(map(int, input().split())) for _ in range(n)]
t = int(input())
upgrade_frame()
for _ in range(t):
doit()
upgrade_frame()
for i in getArr:
for j in i:
print(j, end=' ')
print()
|
cs |
반응형