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

bej_ve·2022년 10월 29일
0

python알고리즘

목록 보기
39/46

<문제>
건물의 내구도를 나타내는 2차원 정수 배열 board와 적의 공격 혹은 아군의 회복 스킬을 나타내는 2차원 정수 배열 skill이 매개변수로 주어집니다. 적의 공격 혹은 아군의 회복 스킬이 모두 끝난 뒤 파괴되지 않은 건물의 개수를 return하는 solution함수를 완성해 주세요.

<코드>

def solution(board, skill):
    answer=0
    tmp=[[0 for j in range(len(board[0])+1)]for i in range(len(board)+1)]
    
    for  t, r1, c1, r2, c2, d in skill:
        if t==2:
            d= -d
        tmp[r1][c1]-=d
        tmp[r1][c2+1]+=d
        tmp[r2+1][c1]+=d
        tmp[r2+1][c2+1]-=d
        
    for i in range(len(tmp)-1):
        for j in range(len(tmp[0])-1):
            tmp[i][j+1]+=tmp[i][j]
    for i in range(len(tmp)-1):
        for j in range(len(tmp[0])-1):
            tmp[i+1][j]+=tmp[i][j]
    for i in range(len(board)):
        for j in range(len(board[0])):
            if board[i][j]+tmp[i][j]>0:
                answer+=1
  
    return answer

<설명>
단순하게 구현했다가 효율성에서 실패하게 된다.
그래서 누적합을 사용해서 이중포문을 사용하지 않도록 노력했다.
링크텍스트 해당 블로그를 보고 풀이를 이해했다.

0개의 댓글