{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉BFS/DFS〉공장 무선 신호 전파 완료 시각← 이전다음 →
#091 · BFS/DFS중간BFS / 다중 시작점(multi-source)

공장 무선 신호 전파 완료 시각

문제

공장 한 층의 도면이 N×M 격자 floor로 주어집니다. 각 칸의 값은 다음과 같습니다.

  • 0: 신호가 닿아야 하는 작업 구역
  • 1: 무선 중계기가 설치된 칸
  • 2: 차폐벽 — 신호가 통과하지도, 머무르지도 못함

모든 중계기는 동시에 신호를 내보냅니다. 1초가 지날 때마다 신호가 닿은 칸에서 상하좌우로 인접한 작업 구역으로 신호가 퍼집니다. 차폐벽은 뚫지 못하고 돌아가야 합니다.

모든 작업 구역에 신호가 닿는 데 걸리는 시간(초)을 반환하는 solution(floor)를 구현하세요.

  • 작업 구역이 하나도 없으면 0을 반환합니다.
  • 신호가 영영 닿지 못하는 작업 구역이 하나라도 있으면 -1을 반환합니다 (중계기가 하나도 없는 경우도 여기에 해당합니다).

예시

floor 반환값 설명
[[1,0,2],[0,0,0],[2,0,0]] 4 오른쪽 아래 구석이 가장 늦게(4초) 닿음
[[1,0,0],[2,2,0],[0,0,0]] 6 차폐벽을 크게 돌아가 왼쪽 아래가 6초
[[1,2,0],[2,2,0],[0,0,0]] -1 중계기가 차폐벽에 갇혀 아무 데도 닿지 못함
[[1,1],[1,2]] 0 작업 구역이 없음

제약 조건

  • 1 ≤ N, M ≤ 50
  • floor[i][j]는 0, 1, 2 중 하나

시간 복잡도 목표: O(N×M)

테스트 케이스

예시 1: 차폐벽 두 개를 피해 4초
입력: floor = [[1,0,2],[0,0,0],[2,0,0]]
출력: 4
예시 2: 크게 우회해 6초
입력: floor = [[1,0,0],[2,2,0],[0,0,0]]
출력: 6
예시 3: 중계기가 갇힘
입력: floor = [[1,2,0],[2,2,0],[0,0,0]]
출력: -1
예시 4: 작업 구역 없음
입력: floor = [[1,1],[1,2]]
출력: 0
중계기가 하나도 없음
입력: floor = [[0,0],[0,0]]
출력: -1
한 줄 격자, 양 끝 중계기가 동시에 전파
입력: floor = [[1,0,0,0,1]]
출력: 2
세로 통로만 열린 격자
입력: floor = [[2,1,2],[2,0,2],[2,0,2]]
출력: 2
세로로 긴 격자, 벽을 돌아 왼쪽 아래가 5초
입력: floor = [[1,0],[0,0],[2,0],[0,0]]
출력: 5
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.