4991. 로봇청소기

·2025년 9월 27일
0

백준 알고리즘

목록 보기
256/270
post-thumbnail

해결 전략 1번.

: 시작점으로부터 모든 더러운 칸을 순회하면서 최단 거리로 더러운거 다 처리하는 거를 출력하는 문제인데

  • 문제를 음미해보면, 더러운거 끼리 - 간의 경우의 수를 구해야 한다.

  • 1-2-3 으로 갈때가 최소비용일 수 있고,
    // 132 / 213 / 231 / 312 / 321 순으로 갈때가 최소비용일 수 있따.

  • -> 일단은 순열을 진행해야 겠다
    : 더러운 친구들의 최대 개순는 10개이므로 10! : 360만.

해결 전략 2번

  • 더러운 친구들을 하나 타겟 잡고, 다른 더러운 친구들을 향한 최단거리를 구해야 한다.

-> 시간복잡도는 bfs이므로 400 10번(더러운거 최대 10개)
// 400 은 20
20(w, h)

=> 최종 시간복잡도는 360만 400 10 인데 이미 시간초과.


해결 전략 3번.

: 매순간 bfs를 하지 말고 distT[startP][endP]로 만들어서

순열 이뤄진 상태에서 이렇게 하면 좋을 듯 하다.

  • 이런식으로 하면 시간복잡도는 360만 + 4000 이 된다.

주의할 점

  • 시작점에서 더러운칸으로 못가면 -1처리해야 한다.

  • 문제에서 모든 더러운 친구들을 청소해야 한다.

profile
🔥🔥🔥

0개의 댓글