피드로 돌아가기
Rotting Oranges
Dev.toDev.to
Backend

Multi-Source BFS 도입을 통한 시간 복잡도 O((M×N)²)에서 O(M×N)으로 최적화

Rotting Oranges

Jaspreet singh2026년 6월 27일5intermediate

Context

그리드 내 여러 지점에서 동시에 확산되는 상태 변화를 추적해야 하는 문제 상황. 전체 그리드를 반복 스캔하는 Brute Force 방식은 중복 방문으로 인한 높은 시간 복잡도 발생.

Technical Solution

  • 초기 상태의 모든 Rotten Orange를 Queue에 동시 삽입하는 Multi-Source BFS 구조 설계
  • 각 BFS Level을 시간 단위(1분)로 매핑하여 최단 시간 도달 보장
  • 4방향 탐색 및 방문 여부 확인을 통한 중복 연산 제거
  • Fresh Orange 카운트를 통한 최종 도달 가능 여부 검증 로직 구현
  • Queue 기반의 Level-order Traversal을 통한 동시 확산 프로세스 시뮬레이션

Impact

  • Time Complexity: O((M × N)²) → O(M × N)으로 개선
  • Space Complexity: O(1) → O(M × N)으로 변경하며 연산 효율성 확보

1. 다중 시작점에서 동시 확산되는 최단 거리/시간 문제 발견 시 Multi-Source BFS 적용 검토

2. 상태 변화의 레벨을 통해 시간 흐름을 추적하는 Level-order Traversal 패턴 활용

3. 불필요한 전체 스캔 대신 큐를 이용한 변경 지점 중심의 전파 방식 설계

원문 읽기