ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BOJ 16946 벽 부수고 이동하기 4(Python 3)
    알고리즘/BOJ 2019. 2. 18. 01:20
    반응형

    https://www.acmicpc.net/problem/16946


    플러드 필 + BFS 문제이다.

    일단 먼저 말해두자면 (x, y)좌표가 1일 때마다 bfs를 돌리면 시간 초과가 나온다.


    그래서 0끼리 뭉쳐있는 곳끼리 값을 설정 해줘야 한다.

    다 설정했으면 그때 for문을 다시 돌려 벽이 있는 곳이 나온다면 리스트를 하나 만든다음, 상하좌우에 0이 있다면 플러드필을 이용해 저장한 값을 리스트에 저장해준다.

    그다음 set을 이용해 중복 제거 해주고 값을 더해주면 끝난다.


    코드가 너무 길어서 메인 코드 가독성을 해치기 때문에 따로 함수 2개를 구현하였다.

    bfs 함수는 0끼리 뭉쳐있는 곳을 묶어준 후 리스트에 넓이를 저장해주는 함수이고, Sum 함수는 플러드 필을 다하고 벽 좌표에 출력할 값을 구하는 함수이다.



    반응형

    댓글

Designed by Tistory.