출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120866
def solution(board):
n = len(board)
danger = set()
# 같은 튜플이 겹칠까봐
for i, row in enumerate(board):
for j, x in enumerate(row):
if not x:
# 0이면 continue
continue
# 1이면 board의 row, col의 번호와 -1,0,1을 각각 더해준다
danger.update((i+di, j+dj) for di in [-1,0,1] for dj in [-1, 0, 1])
return n*n - sum(0 <= i < n and 0 <= j < n for i, j in danger)
# sum 앞에 if조건문?
- board의 i,j번째 요소인 X의 값이 0이면 continue
- 1이면 X의 row,col에 -1,0,1을 조합한 값을 모두 더해 9가지 근접한 좌표를 danger에 넣는다
- 이때 danger라는 집합에 넣어서 중복을 피하도록 하낟
- sum() 함수 안에서 i,j가 모두 0과 n 사이라는 조건에 해당하는 값들만 남기고 그 값들의 개수를 구해서 전체 좌표 수에서 뺀다
sum 함수??