y00n_nms   4년 전

최대힙과 최소힙을 만들어서 각각 넣고, ind로는 인덱스로 해당 원소가 유효한지 아닌지 판단했습니다.

잘못된 부분이나 반례 찾아주시면 감사하겠습니다 ㅠㅠ

park780172   4년 전

최종 결과를 출력하기 전에 유효하지 않은 값이 나올 수도 있을 것 같습니다.

그리고 while(1) 안에서 pop() 후에는 비어 있을 수도 있는데, top().second로 접근해버리면 오류가 발생할 수도 있습니다.

y00n_nms   4년 전

댓글 감사합니다. 

if (size == 0) { //비어있으면

continue;

}

부분으로 유효한 원소개수를 확인하기 때문에 유효하지 않은 것들을 pop 한 후에는 유효한 것이 최소한 하나는 남아있을 것 같은데 제가 잘못 생각하고 있는 건가요?

tothesky7   4년 전

앞선 답변자님께서 말씀하신 "최종 결과를 출력하기 전에"의 뜻은 70-72번째 줄에서 최종 결과를 출력할 때

max_heap.top().second == 0임이 보장되지 않았다는 뜻인 것 같습니다. (min_heap도 마찬가지)

해당 코드 직전에도 max_heap & min_heap의 top().second가 1일 경우 pop()을 반복하는 코드를 추가해주셔야 할 겁니다.

간단한 반례도 함께 첨부해 드립니다!

y00n_nms   4년 전

감사합니다 !! 골드 문제 막 시작했는데 역시 어렵네요.. :>

댓글을 작성하려면 로그인해야 합니다.