확산 2

확산 알고리즘

문제 세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다. 이 배열의 각 칸에 들어있는 수는 1초에 한번씩 자기 자신을 나눠서 x, y좌표와의 거리가 1이상 k이하인 칸들에 더해준다. 두 점 (x1, y1), (x2, y2)의 거리는 |x1-x2| + |y1-y2|로 구한다. 이때 주변에 나눠주는 값은 현재 그 칸에 있는 값을 2 k2 + 2 k + 1로 나눈 몫이고, 주변에 나눠준 만큼 원래 있던 값은 줄어들게 된다. 예를 들어, 아래 그림에서 k가 1이라면 t = 0의 (2,1)위치에 있는 8은 8/5의 몫인 1을 주변에 있는 세 칸에 나눠주고, 자기자신은 3만큼 줄어든다. t초가 지난 후 배열의 상태를 출력하여라. 입력 첫 번째 줄에 N, M, k 가 주어진다. 두 번째 줄부터 N 줄에 걸쳐 ..

N칸 확산

문제 세로 길이 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..

반응형