아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

음식 큐브

면접 대비

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

요약
주어진 음식 큐브 사이에서 바깥 공간과 연결되지 않은 빈 칸 덩어리, 즉 구멍의 개수를 센다.
난이도

보통10점 중 6점

유형
BFS, 그래프, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

우주 왕복선에 탄 우주인들이 지구로 귀환할 다음 이탈 시점을 기다리고 있다. 할 일이 없어 지루해진 이들은 한 변의 길이가 1인 정육면체 모양의 음식 큐브로 게임을 하기로 한다. 무중력 환경에서는 놓아 둔 물체가 그 자리에 그대로 떠 있다. 한 우주인이 음식 큐브 여러 개를 공간에 배치하는데, 이때 큐브들 사이에 빈 공간(구멍)이 생길 수 있다. 다른 사람들은 큐브들의 좌표가 주어졌을 때 구멍의 개수를 세어야 한다.

3차원 공간을 한 변의 길이가 1인 단위 칸들로 나눈다고 하자. 각 음식 큐브는 정수 좌표 (x,y,z)(x, y, z) 로 지정되는 하나의 단위 칸을 차지한다. 음식 큐브가 없는 단위 칸을 빈 칸이라고 부른다. 두 칸이 한 면을 맞대고 있으면(즉 세 좌표 중 정확히 하나가 11 만큼 차이 나면) 서로 인접한다고 한다.

구멍이란, 면으로 서로 이어진 빈 칸들의 극대 연결 덩어리 중에서 여섯 방향 모두가 음식 큐브로 완전히 둘러싸여 바깥의 무한한 공간과 이어지지 않는 것을 말한다. 각 음식 큐브의 좌표를 입력받아 구멍의 개수를 구하는 프로그램을 작성하라.

입력

입력의 첫 줄에는 테스트 케이스의 개수를 나타내는 정수 tt (1≤t≤201 \le t \le 20) 가 주어진다. 각 테스트 케이스의 첫 줄에는 음식 큐브의 개수 MM 이 주어진다. 이어지는 MM 개의 줄 중 ii 번째 줄에는 한 음식 큐브의 세 좌표 xix_i, yiy_i, ziz_i 가 주어지며, 모두 11 이상 100100 이하의 정수이다.

출력

각 테스트 케이스마다 구멍의 개수를 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

    입력
    2
    26
    1 1 1
    1 2 1
    1 3 1
    2 1 1
    2 2 1
    2 3 1
    3 1 1
    3 2 1
    3 3 1
    1 1 2
    1 2 2
    1 3 2
    2 1 2
    2 3 2
    3 1 2
    3 2 2
    3 3 2
    1 1 3
    1 2 3
    1 3 3
    2 1 3
    2 2 3
    2 3 3
    3 1 3
    3 2 3
    3 3 3
    7
    1 1 1
    1 1 2
    1 2 1
    1 2 2
    2 1 1
    2 1 2
    2 2 1
    
    예상 출력
    1
    0
    
  2. 예제 2

    입력
    1
    1
    5 5 5
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1
    26
    1 1 1
    1 1 2
    1 1 3
    1 2 1
    1 2 2
    1 2 3
    1 3 1
    1 3 2
    1 3 3
    2 1 1
    2 1 2
    2 1 3
    2 2 1
    2 2 3
    2 3 1
    2 3 2
    2 3 3
    3 1 1
    3 1 2
    3 1 3
    3 2 1
    3 2 2
    3 2 3
    3 3 1
    3 3 2
    3 3 3
    
    예상 출력
    1