[17144] 미세먼지 안녕!

sea·2023년 10월 3일
0

알고리즘

목록 보기
14/14
# r행 c열 
list_ = [[0 for _ in range(c)] for _ in range(r)]

# matrix input
## 이미 input 받아오는 게 1x8 (c)
board = [list(map(int, input().split())) for _ in range(r - 1)]

https://www.acmicpc.net/problem/17144

아래 결과 디버깅

r, c, t = map(int, input().split())
ori_board, air_cleaner = [], []

ori_board = [list(map(int, input().split()))
             for _ in range(r)]

# airclear 위치 받기
# air_cleaner =

#######################################################
dxs, dys = [0, 1, 0, -1], [1, 0, -1, 0]

def in_range(x, y):
    return 0 <= x and x < r and 0 <= y and y < c

def diffusion(ori_board):
    # diffused 는 확산된 미세먼지의 양을 말한다.
    diffused = [[0 for _ in range(c)] for _ in range(r)]
    global dxs, dys
    for i in range(r):
        for j in range(c):
            print(f"original board[{i}][{j}] 에 대해서")
            count = 0
            if ori_board[i][j] != 0 or ori_board[i][j] != -1:
                print(f"ori_board{[i]}{[j]} 는 미세먼지가 있는 칸")
                for dx, dy in zip(dxs, dys):
                    ni, nj = i + dx, j + dy
                    print(f"얘는 단순히 방향, 새롭게 만들어진 애들은 {ni}, {nj}")
                    if in_range(ni, nj) and ori_board[i][j] != 0 and ori_board[i][j] != -1:
                        print(f"인접 칸인 ori_board[{ni}][{nj}]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 {ori_board[ni][nj]}")
                        count += 1
                        #### 여기에서, 중복으로 안 더해져!!
                        diffused[ni][nj] += ori_board[i][j] // 5
                print(count)
                # 원래 미세먼지에서 확산된 만큼 줄어든 양. 나중에 두 개를 합치면 최종 먼지가 나옴.
                ori_board[i][j] -= (ori_board[i][j] // 5) * count

    result = [[0 for _ in range(c)] for _ in range(r)]
    for i in range(r):
        for j in range(c):
            result[i][j] = ori_board[i][j] + diffused[i][j]

    print(result)

diffusion(ori_board)


>>> output
7 8 1
0 0 0 0 0 0 0 9
0 0 0 0 3 0 0 8
-1 0 5 0 0 0 22 0
-1 8 0 0 0 0 0 0
0 0 0 0 0 10 43 0
0 0 5 0 15 0 0 0
0 0 40 0 0 0 20 0
original board[0][0] 에 대해서
ori_board[0][0] 는 미세먼지가 있는 칸
0
original board[0][1] 에 대해서
ori_board[0][1] 는 미세먼지가 있는 칸
0
original board[0][2] 에 대해서
ori_board[0][2] 는 미세먼지가 있는 칸
0
original board[0][3] 에 대해서
ori_board[0][3] 는 미세먼지가 있는 칸
0
original board[0][4] 에 대해서
ori_board[0][4] 는 미세먼지가 있는 칸
0
original board[0][5] 에 대해서
ori_board[0][5] 는 미세먼지가 있는 칸
0
original board[0][6] 에 대해서
ori_board[0][6] 는 미세먼지가 있는 칸
0
original board[0][7] 에 대해서
ori_board[0][7] 는 미세먼지가 있는 칸
인접 칸인 ori_board[1][7]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 8
인접 칸인 ori_board[0][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
2
original board[1][0] 에 대해서
ori_board[1][0] 는 미세먼지가 있는 칸
0
original board[1][1] 에 대해서
ori_board[1][1] 는 미세먼지가 있는 칸
0
original board[1][2] 에 대해서
ori_board[1][2] 는 미세먼지가 있는 칸
0
original board[1][3] 에 대해서
ori_board[1][3] 는 미세먼지가 있는 칸
0
original board[1][4] 에 대해서
ori_board[1][4] 는 미세먼지가 있는 칸
인접 칸인 ori_board[1][5]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[2][4]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[1][3]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[0][4]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[1][5] 에 대해서
ori_board[1][5] 는 미세먼지가 있는 칸
0
original board[1][6] 에 대해서
ori_board[1][6] 는 미세먼지가 있는 칸
0
original board[1][7] 에 대해서
ori_board[1][7] 는 미세먼지가 있는 칸
인접 칸인 ori_board[2][7]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[1][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[0][7]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 7
3
original board[2][0] 에 대해서
ori_board[2][0] 는 미세먼지가 있는 칸
0
original board[2][1] 에 대해서
ori_board[2][1] 는 미세먼지가 있는 칸
0
original board[2][2] 에 대해서
ori_board[2][2] 는 미세먼지가 있는 칸
인접 칸인 ori_board[2][3]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[3][2]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[2][1]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[1][2]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[2][3] 에 대해서
ori_board[2][3] 는 미세먼지가 있는 칸
0
original board[2][4] 에 대해서
ori_board[2][4] 는 미세먼지가 있는 칸
0
original board[2][5] 에 대해서
ori_board[2][5] 는 미세먼지가 있는 칸
0
original board[2][6] 에 대해서
ori_board[2][6] 는 미세먼지가 있는 칸
인접 칸인 ori_board[2][7]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[3][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[2][5]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[1][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[2][7] 에 대해서
ori_board[2][7] 는 미세먼지가 있는 칸
0
original board[3][0] 에 대해서
ori_board[3][0] 는 미세먼지가 있는 칸
0
original board[3][1] 에 대해서
ori_board[3][1] 는 미세먼지가 있는 칸
인접 칸인 ori_board[3][2]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[4][1]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[3][0]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 -1
인접 칸인 ori_board[2][1]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[3][2] 에 대해서
ori_board[3][2] 는 미세먼지가 있는 칸
0
original board[3][3] 에 대해서
ori_board[3][3] 는 미세먼지가 있는 칸
0
original board[3][4] 에 대해서
ori_board[3][4] 는 미세먼지가 있는 칸
0
original board[3][5] 에 대해서
ori_board[3][5] 는 미세먼지가 있는 칸
0
original board[3][6] 에 대해서
ori_board[3][6] 는 미세먼지가 있는 칸
0
original board[3][7] 에 대해서
ori_board[3][7] 는 미세먼지가 있는 칸
0
original board[4][0] 에 대해서
ori_board[4][0] 는 미세먼지가 있는 칸
0
original board[4][1] 에 대해서
ori_board[4][1] 는 미세먼지가 있는 칸
0
original board[4][2] 에 대해서
ori_board[4][2] 는 미세먼지가 있는 칸
0
original board[4][3] 에 대해서
ori_board[4][3] 는 미세먼지가 있는 칸
0
original board[4][4] 에 대해서
ori_board[4][4] 는 미세먼지가 있는 칸
0
original board[4][5] 에 대해서
ori_board[4][5] 는 미세먼지가 있는 칸
인접 칸인 ori_board[4][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 43
인접 칸인 ori_board[5][5]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[4][4]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[3][5]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[4][6] 에 대해서
ori_board[4][6] 는 미세먼지가 있는 칸
인접 칸인 ori_board[4][7]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[5][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[4][5]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 2
인접 칸인 ori_board[3][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[4][7] 에 대해서
ori_board[4][7] 는 미세먼지가 있는 칸
0
original board[5][0] 에 대해서
ori_board[5][0] 는 미세먼지가 있는 칸
0
original board[5][1] 에 대해서
ori_board[5][1] 는 미세먼지가 있는 칸
0
original board[5][2] 에 대해서
ori_board[5][2] 는 미세먼지가 있는 칸
인접 칸인 ori_board[5][3]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[6][2]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 40
인접 칸인 ori_board[5][1]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[4][2]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[5][3] 에 대해서
ori_board[5][3] 는 미세먼지가 있는 칸
0
original board[5][4] 에 대해서
ori_board[5][4] 는 미세먼지가 있는 칸
인접 칸인 ori_board[5][5]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[6][4]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[5][3]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[4][4]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
4
original board[5][5] 에 대해서
ori_board[5][5] 는 미세먼지가 있는 칸
0
original board[5][6] 에 대해서
ori_board[5][6] 는 미세먼지가 있는 칸
0
original board[5][7] 에 대해서
ori_board[5][7] 는 미세먼지가 있는 칸
0
original board[6][0] 에 대해서
ori_board[6][0] 는 미세먼지가 있는 칸
0
original board[6][1] 에 대해서
ori_board[6][1] 는 미세먼지가 있는 칸
0
original board[6][2] 에 대해서
ori_board[6][2] 는 미세먼지가 있는 칸
인접 칸인 ori_board[6][3]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[6][1]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[5][2]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 1
3
original board[6][3] 에 대해서
ori_board[6][3] 는 미세먼지가 있는 칸
0
original board[6][4] 에 대해서
ori_board[6][4] 는 미세먼지가 있는 칸
0
original board[6][5] 에 대해서
ori_board[6][5] 는 미세먼지가 있는 칸
0
original board[6][6] 에 대해서
ori_board[6][6] 는 미세먼지가 있는 칸
인접 칸인 ori_board[6][7]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[6][5]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
인접 칸인 ori_board[5][6]에 확산! 이때 이 칸에 원래 있던 미세먼지 값은 0
3
original board[6][7] 에 대해서
ori_board[6][7] 는 미세먼지가 있는 칸
0
[[0, 0, 0, 0, 0, 0, 1, 8], [0, 0, 1, 0, 3, 0, 5, 6], [-1, 2, 1, 1, 0, 4, 6, 5], [0, 4, 2, 0, 0, 2, 12, 0], [0, 1, 1, 0, 5, 10, 13, 8], [0, 1, 9, 4, 3, 5, 12, 0], [0, 8, 17, 8, 3, 4, 8, 4]]
profile
달려가는중

0개의 댓글