구름톤 챌린지 12일차입니다. 챌린지를 통해 문제 풀이 실력을 향상시킬 수 있으며, 블로그에 학습 일기도 작성하면 추가 보상도 주어지니 관심 있으시면 참여해보시는 것을 추천드립니다.
https://level.goorm.io/l/challenge/goormthon-challenge
구름LEVEL
난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.
level.goorm.io
문제
입력 / 출력
풀이 과정
집에 전력을 공급하기 위해선 그 집에 발전기를 설치하거나, 상하좌우로 인접한 집 중 하나가 전력을 공급받고 있으면 된다. -> 모여있는 집 그룹의 개수를 세면 된다. 집 그룹 안에 있는 한 집에 발전기를 설치하면 그 그룹의 모든 집에 전기가 공급되기 때문이다.
BFS를 사용해 집 그룹의 개수를 파악했다.
import sys
from collections import deque
input = sys.stdin.readline
n = int(input().rstrip())
maps = [list(map(int, input().rstrip().split())) for _ in range(n)]
visited = [[0 for _ in range(n)] for _ in range(n)]
row = [-1, 1, 0, 0]
col = [0, 0, -1, 1]
result = 0
for i in range(n):
for j in range(n):
if visited[i][j] == 0 and maps[i][j] == 1:
result += 1
queue = deque()
queue.append((i, j))
visited[i][j] = 1
while queue:
y, x = queue.popleft()
for d in range(4):
ny = y + row[d]
nx = x + col[d]
if 0 <= ny < n and 0 <= nx < n and maps[ny][nx] == 1 and visited[ny][nx] == 0:
visited[ny][nx] = 1
queue.append((ny, nx))
print(result)
'-- 예전 기록 > [완료] 구름톤 챌린지' 카테고리의 다른 글
[ 구름톤 챌린지 ] 14일차 미션 - 작은 노드 (2) | 2023.08.31 |
---|---|
[ 구름톤 챌린지 ] 13일차 미션 - 발전기 (2) (0) | 2023.08.30 |
[ 구름톤 챌린지 ] 11일차 미션 - 통증 (2) (2) | 2023.08.28 |
[ 구름톤 챌린지 ] 10일차 미션 - GameJam (1) | 2023.08.25 |
[ 구름톤 챌린지 ] 9일차 미션 - 폭탄 구현하기 (2) (0) | 2023.08.24 |