728x90
반응형
문제 설명
제한사항
- board는 n * n 배열입니다.
- 1 ≤ n ≤ 100
- 지뢰는 1로 표시되어 있습니다.
- board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다.
입출력 예
입출력 예 설명
입출력 예 #1
- (3, 2)에 지뢰가 있으므로 지뢰가 있는 지역과 지뢰와 인접한 위, 아래, 좌, 우, 대각선 총 8칸은 위험지역입니다. 따라서 16을 return합니다.
입출력 예 #2
- (3, 2), (3, 3)에 지뢰가 있으므로 지뢰가 있는 지역과 지뢰와 인접한 위, 아래, 좌, 우, 대각선은 위험지역입니다. 따라서 위험지역을 제외한 칸 수 13을 return합니다.
입출력 예 #3
- 모든 지역에 지뢰가 있으므로 안전지역은 없습니다. 따라서 0을 return합니다.
solution.py
def solution(board):
answer = 0 # 안전한 지역의 칸 수를 저장할 변수 초기화
# board를 순회하며 각 지점에 대해 검사
for i, line in enumerate(board):
for j, dot in enumerate(line):
# 만약 현재 지점이 지뢰(1)라면 주변 지역을 검사
if dot == 1:
# 현재 지점의 주변 8칸(위, 아래, 좌, 우, 대각선)을 순회
for i2 in range(i-1 if i-1 >= 1 else 0, i+2 if i+2 <= len(board) else len(board)):
for j2 in range(j-1 if j-1 >= 1 else 0, j+2 if j+2 <= len(board[0]) else len(board[0])):
# 만약 주변 지점이 지뢰가 아니라면(-1이 아니라면) 위험 지역으로 표시(-1)
if board[i2][j2] != 1:
board[i2][j2] = -1
# 전체 보드를 다시 순회하며 안전한 지역(0)의 칸 수를 계산
for line in board:
answer += line.count(0)
# 안전한 지역의 칸 수를 반환
return answer
반응형
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[ Python ] - 베스트앨범(42579) (0) | 2024.05.01 |
---|---|
[ Python ] - 겹치는 선분(120876) (1) | 2024.04.21 |
[ Python ] - 로그인 성공?(120883) (0) | 2024.04.08 |
[ Python ] - 특이한 정렬(120880) (0) | 2024.04.08 |
[ Python ] - 저주의 숫자 3(120871) (0) | 2024.04.08 |