만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

양 한 마리... 양 두 마리...

면접 대비

시간 제한1초메모리 제한256 MB

요약
각 격자에서 상하좌우로 이어진 # 칸 묶음이 몇 개인지 셉니다.
난이도

쉬움10점 중 3점

유형
DFS, 그래프, 행렬
정답자
아직 제출이 없습니다

문제

얼마 전 나는 불면증에 시달렸다. 천장이 뚫어져라 눈을 뜬 채로 밤을 지새우곤 했다. 그러던 어느 날 친구 광민이에게 불면증 이야기를 했더니 이렇게 답했다. "양이라도 세봐!"

정말 도움이 안 되는 친구라고 생각했다. 그런데 막상 다시 잠을 청하려고 침대에 누우니 나도 모르게 양을 세고 있었다. 그러다 이걸로 프로그램을 하나 짜볼 수 있겠다는 생각이 들어 침대에서 일어나 컴퓨터 앞으로 향했다.

양은 #, 풀은 .으로 나타낸다. 그러면 초원에서 풀을 뜯는 양을 그리드 하나로 그릴 수 있다. 양이 있는 두 칸이 위, 아래, 왼쪽, 오른쪽으로 맞닿아 있으면 두 칸은 같은 무리에 속한다. 대각선으로만 맞닿은 두 칸은 서로 다른 무리다. 이렇게 이어진 # 칸의 덩어리 하나가 양 무리 하나이고, 이웃한 양이 하나도 없는 # 한 칸도 무리 하나로 센다.

그리드를 다 그리고 나니 졸음이 몰려왔지만 무리가 몇 개인지 궁금해서 견딜 수 없었다. 그리드가 주어지면 양 무리의 개수를 구하라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫째 줄에는 그리드의 높이 HH와 너비 WW가 공백을 사이에 두고 주어진다. 이어서 HH개의 줄에 걸쳐 길이가 WW인 문자열이 한 줄씩 주어진다. 각 문자는 양을 뜻하는 # 또는 풀을 뜻하는 .이다.

  • 0<T≤1000 < T \le 100
  • 0<H≤1000 < H \le 100
  • 0<W≤1000 < W \le 100

출력

각 테스트 케이스마다 그리드에 있는 양 무리의 개수를 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.

예제5

  1. 예제 1

    입력
    2
    4 4
    #.#.
    .#.#
    #.##
    .#.#
    3 5
    ###.#
    ..#..
    #.###
    
    예상 출력
    6
    3
    
  2. 예제 2

    입력
    3
    1 1
    .
    1 1
    #
    2 2
    ##
    ##
    
    예상 출력
    0
    1
    1
    
  3. 예제 3

    입력
    4
    1 10
    #.#.#.#.#.
    1 10
    ##########
    10 1
    #
    .
    #
    #
    .
    #
    .
    .
    #
    #
    10 1
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    예상 출력
    5
    1
    4
    0
    
  4. 예제 4

    입력
    1
    5 5
    #....
    .#...
    ..#..
    ...#.
    ....#
    
    예상 출력
    5
    
  5. 예제 5

    입력
    1
    15 15
    ###############
    ..............#
    ###############
    ###############
    ###############
    #..............
    ###############
    ###############
    ###############
    ..............#
    ###############
    ###############
    ###############
    #..............
    ###############
    
    예상 출력
    1