Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발계발

프로그래머스 - 안전지대(120866) 본문

알고리즘

프로그래머스 - 안전지대(120866)

Ju_Nik_E 2024. 4. 23. 14:36

문제 설명

 

제한사항

 

접근방식

- 안전지역을 표시할 2차원배열 생성

- board의 모든 원소를 검사

- board의 원소가 1이면 만들어놓은 2차원배열의 동,서,남,북, 대각선을 모두 위험지역으로 표시

- 생성한 2차원배열의 안전지역 count해서 반환

 

풀이 코드

def solution(board):
    answer = 0
    n = len(board)
    safe_board = [[0] * n for _ in range(n)]

    directions = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]

	for i in range(n):
        for j in range(n):
            if board[i][j] == 1:
                safe_board[i][j] = 1
                
                for dx, dy in directions:
                    nx, ny = i + dx, j + dy
                    
                    if 0 <= nx < n and 0<= ny < n:
                        safe_board[nx][ny] = 1
    
    for i in range(n):
        for j in range(n):
            if safe_board[i][j] == 0:
                answer += 1
    
    return answer