• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

질문있습니다.

24.04.02 13:25 작성 조회수 52

0

http://boj.kr/efd11008ccc14646a364953dfec3e77c 
  1. 가장자리의 얼음을 녹인다.
  2. 백조끼리 이어져있는지 확인한다.
이 두 가지 동작을 while로 돌리고 싶었는데 어느 부분이 틀렸는지 모르겠습니다...도와주세요

답변 1

답변을 작성해보세요.

0

안녕하세요 은정님 ㅎㅎ

    while(true){
        memset(visited, 0, sizeof(visited));
        memset(Lvisited, 0, sizeof(Lvisited));
        v.clear();
        melt(0,0);

이 문제는 이렇게 dfs만으로 풀면 어차피 시간초과가 뜨게 됩니다.

queue 2개를 사용한 bfs로 시도 부탁드립니다.

 

그리고 melt를 보시면 0, 0에서 시작하는데 0, 0이 무조건 얼음이 녹아져있다는 사실은 자명하지 않습니다.

8 17
XXXXXXXXX..XX.XXX

예를 들어 이렇게 나올 수도 있습니다.

 

이 경우 .부터 시작되는 melt는 일어나지 않습니다.

XXXXXXXXX..XX.XXX

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.