BOJ - 11123

주의·2024년 1월 2일
0

boj

목록 보기
41/214

백준 문제 링크
양 한마리... 양 두마리...

❓접근법

  1. BFS를 사용했다.
  2. bfs함수는 기본 함수를 사용하면 된다.
  3. 이중 반복문으로 lst[i][j] == '#'이면 bfs(i,j)를 실행시키고 answer + 1
  4. answer를 출력하면 끝!

👌🏻코드

from collections import deque
T = int(input())

for _ in range(T):
    H,W = map(int, input().split())
    lst = []
    for i in range(H):
        lst.append(list(input()))
        
    def bfs(x,y):
        queue = deque()
        queue.append((x,y))
        
        lst[x][y] = '.'
        
        dx = [0,0,1,-1]
        dy = [1,-1,0,0]
        
        while queue:
            x,y = queue.popleft()
            
            for d in range(4):
                nx = x + dx[d]
                ny = y + dy[d]
                
                if (0<=nx<H) and (0<=ny<W) and (lst[nx][ny] == '#'):
                    lst[nx][ny] = '.'
                    queue.append((nx,ny))
    
    answer = 0
    for i in range(H):
        for j in range(W):
            if lst[i][j] == '#':
                bfs(i,j)
                answer += 1
    print(answer)
    

0개의 댓글