인프런 커뮤니티 질문&답변

최은정 ◡̎님의 프로필 이미지
최은정 ◡̎

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

3-K와 문제의 단순화

질문있습니다.

작성

·

90

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점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


최은정 ◡̎님의 프로필 이미지
최은정 ◡̎

작성한 질문수

질문하기