일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 개발/언어/Java
- 개발/언어론
- AI/ML
- AI/GPT
- 개발/MySQL
- 취업
- 개발/CS/알고리즘
- 개발/에러
- 카테캠
- ai
- 개발/OOP
- 개발/webrtc
- 개발/Java
- 개발/보안
- 개발/컴퓨터네트워크
- 개발/Java/Spring
- 개발/프레임워크&라이브러리
- electron
- 개발/Tools/프레임워크/Spring
- 알고리즘
- 카카오 테크 캠퍼스
- ⌨️Developer
- 개발/Electron
- 카카오테크캠퍼스
- 개발/CS/OS
- 개발/환경
- ⌨️Developer/보안
- 개발/네트워크
- 대외활동/카카오테크캠퍼스
- 개발
Archives
- Today
- Total
봄수의 연구실
Goorm _발전기 본문
문제
풀이
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 |