-
[백준] 17144 - 미세먼지 안녕! (파이썬)알고리즘/백준 2021. 9. 25. 20:07
import sys input = sys.stdin.readline R, C, T = map(int,input().split()) array = [] for _ in range(R): array.append(list(map(int,input().split()))) air = [] for i in range(R): if array[i][0] == -1: air.append(i) air.append(i+1) break dx = [-1,0,1,0] dy = [0,1,0,-1] def top_square(start): array[start-1][0] = 0 for i in range(start-1,0,-1): array[i][0] = array[i-1][0] for i in range(C-1): array[0][i] = array[0][i+1] for i in range(start): array[i][C-1] = array[i+1][C-1] for i in range(C-1,1,-1): array[start][i] = array[start][i-1] array[start][1] = 0 def bottom_square(start): array[start+1][0] = 0 for i in range(start+1,R-1): array[i][0] = array[i+1][0] for i in range(0,C-1): array[R-1][i] = array[R-1][i+1] for i in range(R-1,start,-1): array[i][C-1] = array[i-1][C-1] for i in range(C-1,1,-1): array[start][i] = array[start][i-1] array[start][1] = 0 #T초 for _ in range(T): storage = [] for x in range(R): for y in range(C): if array[x][y] >= 1: temp = array[x][y] for d in range(4): nx = x + dx[d] ny = y + dy[d] if 0<=nx<R and 0<=ny<C: if array[nx][ny] != -1: storage.append([nx,ny,array[x][y]//5]) temp -= array[x][y]//5 array[x][y] = temp for i in storage: array[i[0]][i[1]] += i[2] top_square(air[0]) bottom_square(air[1]) cnt = 0 for i in range(R): for j in range(C): if array[i][j] != -1: cnt += array[i][j] print(cnt)
윗부분 아랫부분 나누어서 함수를 만들었다. 2차원 배열에서 직사각형으로 도는건.. 진짜 꾸준히 나온다
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 19238 - 스타트 택시 (파이썬) (0) 2021.09.28 [백준] 17142 - 연구소 3 (파이썬) (0) 2021.09.26 [백준] 16948 - 데스 나이트 (파이썬) (0) 2021.09.24 [백준] 16947 - 서울 지하철 2호선 (파이썬) (0) 2021.09.24 [백준] 16936 - 나3곱2 (파이썬) (0) 2021.09.24