봄수의 연구실

Goorm _발전기 본문

알고리즘 풀이

Goorm _발전기

berom 2023. 8. 30. 15:08

문제

풀이

from collections import deque

# Python 코드로 문제 해결 알고리즘 구현 (BFS 사용)
def min_generators(n, grid):
    # 발전기 개수 초기화
    generator_count = 0

    # 전력 공급 상태를 저장할 리스트 초기화
    supplied = [[False for _ in range(n)] for _ in range(n)]

    # BFS를 위한 방향 벡터
    directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]

    # 모든 칸을 순회
    for i in range(n):
        for j in range(n):
            # 집이 있는 칸을 찾음
            if grid[i][j] == 1 and not supplied[i][j]:
                # 전력이 공급되지 않은 집에 발전기 설치
                generator_count += 1

                # BFS 시작
                queue = deque([(i, j)])
                while queue:
                    x, y = queue.popleft()
                    for dx, dy in directions:
                        nx, ny = x + dx, y + dy
                        if 0 <= nx < n and 0 <= ny < n and not supplied[nx][ny]:
                            supplied[nx][ny] = True
                            if grid[nx][ny] == 1:
                                queue.append((nx, ny))

    return generator_count

# 동적 입력 받기
n = int(input())
grid = [list(map(int, input().split())) for _ in range(n)]

# 결과 출력
print(min_generators(n, grid))
728x90

'알고리즘 풀이' 카테고리의 다른 글

구름톤 챌린지 3주차  (0) 2023.08.30
Goorm_발전기(2)  (0) 2023.08.30
구름톤 챌린지 2주차 - 2  (0) 2023.08.24
Goorm_구름 찾기 깃발  (0) 2023.08.22
구름톤 챌린지 2주차  (0) 2023.08.21