만드는 중입니다

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

대각선 퍼즐

면접 대비

시간 제한20초메모리 제한1024 MB

요약
N x N 격자의 검은색과 흰색 칸이 주어질 때, 대각선 단위로 색을 뒤집어 모든 칸을 검은색으로 만드는 최소 횟수를 구합니다.
난이도

보통10점 중 5점

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

문제

키부르가 여러분이 풀 새로운 퍼즐을 만들었다. 이 퍼즐은 N×NN \times N 격자로 이루어져 있다. 각 칸은 검은색 또는 흰색이다. 퍼즐의 목표는 가능한 한 적은 횟수의 이동으로 모든 칸을 검은색으로 만드는 것이다.

한 번의 이동에서 임의의 대각선을 하나 고를 수 있고, 그 대각선 위에 있는 모든 칸의 색을 뒤집을 수 있다(검은색은 흰색이 되고, 흰색은 검은색이 된다). 예를 들어 3×33 \times 3 격자에서 가능한 대각선은 아래 10개이다.

/..      ./.      ../      ...      ...
...      /..      ./.      ../      ...
...      ...      /..      ./.      ../


...      ...      \..      .\.      ..\
...      \..      .\.      ..\      ...
\..      .\.      ..\      ...      ...

초기 상태가 주어졌을 때, 모든 칸을 검은색으로 만드는 데 필요한 최소 이동 횟수는 얼마인가? 모든 칸을 검은색으로 만드는 것이 가능하다고 보장된다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다. 각 테스트 케이스는 격자의 크기 NN이 적힌 줄로 시작한다. 그다음 NN개의 줄에 각각 NN개의 문자가 주어지며, 격자의 초기 상태를 나타낸다. rr행 cc열의 문자가 .이면 그 칸은 처음에 흰색이고, #이면 검은색이다.

출력

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력한다. 여기서 xx는 테스트 케이스 번호(1부터 시작)이고, yy는 모든 칸을 검은색으로 만드는 데 필요한 최소 이동 횟수이다.

제한

1≤T≤1001 \le T \le 100.

모든 칸을 검은색으로 만드는 것이 가능하다고 보장된다.

힌트

첫 번째 예제에서 필요한 최소 이동 횟수는 3이다. 과정은 다음과 같다.

..#    ..#    .##    ###
#.# -> ..# -> #.# -> ###
#..    ##.    ##.    ###

두 번째 예제에서 필요한 최소 이동 횟수는 2이다. 과정은 다음과 같다.

.####    #####    #####
#.###    #####    #####
##.## -> ##### -> #####
###.#    #####    #####
#####    ####.    #####

세 번째 예제는 모든 칸이 이미 검은색이므로 답은 0이다.

예제1

  1. 예제 1

    입력
    3
    3
    ..#
    #.#
    #..
    5
    .####
    #.###
    ##.##
    ###.#
    #####
    2
    ##
    ##
    
    예상 출력
    Case #1: 3
    Case #2: 2
    Case #3: 0