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

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

좀비 바이러스

면접 대비

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

요약
격자 위 두 바이러스가 매시간 한 칸씩 퍼지고, 같은 시각에 두 바이러스가 동시에 도착한 칸에는 3번 바이러스가 생긴다. 각 바이러스에 감염된 칸 수를 센다.
난이도

보통10점 중 6점

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

문제

NN x MM 격자 모양의 마을이 있다. 어느 날 좀비 바이러스가 창궐하여 바이러스가 빠르게 퍼져나간다. 바이러스를 조사한 결과 세 종류가 존재했고, 각각 11번, 22번, 33번을 붙였다.

바이러스의 특징은 다음과 같다.

  • 11번과 22번 바이러스는 치사율이 낮지만 전염성이 강해 상하좌우로 인접한 마을로 동시에 퍼져나가며, 한 마을을 완전히 감염시키는 데 1시간이 걸린다.
  • 마을이 완전히 감염되어야 다른 마을로 퍼져나갈 수 있고, 다른 바이러스가 완전히 감염시킨 마을은 침범하지 않는다.
  • 마을이 한 바이러스에 완전히 감염되기 전에 다른 종류의 바이러스가 그 마을에 도착하면 33번 바이러스가 만들어진다.
  • 33번 바이러스는 치사율이 높은 만큼 전염성이 약해 감염된 마을에서 더 이상 퍼지지 않는다.
  • 치료제를 가진 마을은 감염시킬 수 없다.

11번 바이러스와 22번 바이러스에 감염된 마을이 나왔다. 바이러스가 퍼질 수 있는 대로 퍼졌을 때 11번, 22번, 33번 바이러스에 감염된 마을이 각각 몇 개인지 구하자.

입력

첫째 줄에 NN(2≤N≤1 0002≤N≤1\,000)과 MM(2≤M≤1 0002≤M≤1\,000)이 주어진다.

둘째 줄부터 NN개의 줄에 걸쳐 마을의 상태가 MM개 주어진다. 마을의 상태는 다음과 같다.

  • −1-1: 치료제를 가진 마을
  • 00: 아직 감염되지 않은 마을
  • 11: 11번 바이러스에 감염된 마을
  • 22: 22번 바이러스에 감염된 마을

11번 바이러스와 22번 바이러스에 감염된 마을은 각각 하나씩만 주어진다.

출력

11번, 22번, 33번 바이러스에 감염된 마을의 수를 공백으로 구분하여 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    4 4
    0 0 0 0
    0 1 0 0
    0 0 0 0
    0 0 0 2
    
    예상 출력
    10 3 3
    
  2. 예제 2

    입력
    7 9
    0 0 0 0 0 0 0 0 0
    0 0 0 2 0 0 -1 0 0
    0 0 0 0 0 0 0 0 0
    0 0 0 -1 0 0 0 1 0
    0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 -1 0 0
    0 0 0 0 0 0 0 0 0
    
    예상 출력
    25 29 6