티스토리 뷰

문제 링크

 

구름LEVEL

구름LEVEL 문제를 풀이하고 부족한 부분을 보완하며 실력을 키워보세요. 구름LEVEL은 코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입

level.goorm.io

풀이

dy = [0, 0, -1, 1]
dx = [-1, 1, 0, 0]

def bomb_drop(N, bombs):
    land = [[0] * N for _ in range(N)]

    for bomb in bombs:
        y, x = bomb
        y -= 1
        x -= 1

        # 폭탄이 떨어진 위치
        land[y][x] += 1

        # 상하좌우
        for i in range(4):
            ny, nx = y + dy[i], x + dx[i]
            if ny < 0 or nx < 0 or ny >= N or nx >= N:
                continue
            land[ny][nx] += 1

    return land

if __name__ == "__main__":
    N, K = map(int, input().split())
    bombs = [list(map(int, input().split())) for _ in range(K)]

    after_land = bomb_drop(N, bombs)
    total = sum([sum(row) for row in after_land])
    print(total)