https://school.programmers.co.kr/learn/courses/30/lessons/120866?language=python3
풀이 - 나의 생각
단순하게 반복문 돌려가면서 구해도 되고
폭탄의 범위를 set으로 저장 후
전체 칸 - set의 길이 = 정답 을 구해도 된다.
코드
def boom(board, x, y):
di = [(-1,-1), (-1, 0), (-1, 1), (0, -1), (0, 1),(1,-1), (1, 0), (1, 1)]
for dx, dy in di:
nx, ny = x + dx, y + dy
if 0 <= nx < len(board) and 0 <= ny < len(board[0]) and board[nx][ny] == 0:
board[nx][ny] = 2
def safezone(board):
return sum(row.count(0) for row in board)
def solution(board):
answer = 0
for i in range(len(board)):
for j in range(len(board[0])):
if board[i][j] == 1:
boom(board, i, j)
return safezone(board)
def solution(board):
answer = 0
n = len(board)
boom = set()
for i, row in enumerate(board):
for j, col in enumerate(row):
if col:
boom.update(
(i + dx, j + dy)
for dy in [-1, 0, 1]
for dx in [-1, 0, 1]
if 0 <= i+dx < n and 0 <= j + dy < n
)
return (n*n) - len(boom)
728x90
'프로그래머스 > Lv.0' 카테고리의 다른 글
캐릭터의 좌표 - Python, 구현 (1) | 2024.11.13 |
---|---|
평행 - Python, 기울기, 비구조화 할당 (1) | 2024.11.13 |
최빈값 구하기 - Python, Counter (0) | 2024.11.11 |
등수 매기기 - Pyton, sorted (1) | 2024.11.10 |
7의 개수 - Python(int를 String으로 변환, count) (0) | 2024.11.01 |