[프로그래머스] 파괴되지않은 건물 (파이썬)

dongEon·2023년 4월 14일
0

난이도 : LV 3

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92344

문제해결 아이디어

  • 못풀어서 카카오 해설을 참고했다.

해설링크

소스코드

def solution(board, skill):
    n = len(board)
    m = len(board[0])
    
    def stack_point(x1,y1,x2,y2,d):
        acc_board[x1][y1] += d
        acc_board[x1][y2+1] -= d
        acc_board[x2+1][y1] -= d
        acc_board[x2+1][y2+1] += d
    
    acc_board = [[0 for _ in range(1001)] for _ in range(1001)]
    
    for t,x1,y1,x2,y2,d in skill:
        if t == 1:
            stack_point(x1,y1,x2,y2,-d)
        else:
            stack_point(x1,y1,x2,y2,d)
            
    for i in range(n):
        for j in range(1,m):
            acc_board[i][j] = acc_board[i][j-1] + acc_board[i][j]
    
    
    for j in range(m):
        for i in range(1,n):
            acc_board[i][j] = acc_board[i-1][j] + acc_board[i][j]
    
    ans = 0
    for i in range(n):
        for j in range(m):
            if board[i][j] + acc_board[i][j] >= 1:
                ans += 1
                
    return ans
profile
반갑습니다! 알고리즘 문제 풀이 정리 블로그 입니다. 피드백은 언제나 환영입니다!

0개의 댓글