[프로그래머스] 안전지대

해피데빙·2023년 1월 11일
0

코딩테스트

목록 보기
45/52
post-custom-banner

출처 : 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 함수??

profile
노션 : https://garrulous-gander-3f2.notion.site/c488d337791c4c4cb6d93cb9fcc26f17
post-custom-banner

0개의 댓글