def solution(board):
# 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류
# 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재
answer = 0
def return_boom_set(x,y):
temp_set = set()
for i in range(x-1,x+2):
for j in range(y-1,y+2):
if 0 <= i < n and 0 <= j < n:
temp_set.add((i,j))
return temp_set
n = len(board)
boom_set = set()
for i in range(n):
for j in range(n):
if board[i][j] == 1:
boom_set |= return_boom_set(i,j)
for x, y in boom_set:
board[x][y] = 1
for i in range(n):
for j in range(n):
if board[i][j] == 0:
answer += 1
return answer
본 문제는 지뢰가 설치된 영역이 주어지고, 지뢰가 설치된 자리와 지뢰를 둘러싼 자리들이 위험지대라고 가정할 때 안전한 공간의 개수를 구하는 문제이다.
지뢰가 있는 좌표를 기준으로 위험지대 좌표들을 구하기 위해 return_boom_set 이라는 함수를 선언하는 방식으로 풀이하였다.
'Algorithm 💡 > Implementation' 카테고리의 다른 글
[소프티어 6250번] 성적 평가(HSAT 5회 정기 코딩 인증평가 기출) (0) | 2024.06.23 |
---|---|
[소프티어 7374번] 진정한 효도 (0) | 2024.06.19 |
[백준 23289번] 온풍기 안녕! (0) | 2024.04.13 |
[백준 20058번] 마법사 상어와 파이어스톰 (0) | 2024.04.07 |
[백준 1388번] 바닥 장식 (0) | 2024.03.04 |