sharkpharaoh   4년 전

"틀렸습니다" 유형으로 문제풀이에 실패했습니다 ㅠㅠ 

질문게시판 반례들이 그다지 도움이 안되서, 적절한 반례를 찾고 싶은데 도움을 받고 싶습니다.

생각한 풀이과정과 각 과정에 매핑되는 함수입니다.

<< 풀이 >>  

  1. 입력 시간에 빙하의 좌표를 벡터에 넣습니다.

 2. 1칸짜리 BFS를 이용해 빙하의 높이를 줄입니다.

 3. 이후에 빙하가 연결되어 있는지 BFS를 통해 검사합니다. 

이때, 빙하가 몇 조각이 되었는지 기억합니다 또한 벡터에서 다 녹은 빙하의 좌표를 빼냅니다.

 4. 2와 3번을 반복하며 몇번 반복했는지 기억합니다. 

5. 3번의 과정중 빙하가 1조각 이상이면 카운트를 return 합니다. 혹은 빙하가 다 녹아버린경우 0를 return 합니다.

<<함수>>

void bfsNextYear() : 1칸 짜리 BFS를 실행하여 벡터 내의 빙하 크기를 줄입니다.

void bfsGlacier(Point start) : 호출 되면 start 좌표에서 BFS를 통한 빙하검사를 하여 check를 업데이트 합니다.

int bfs() : 인터페이스 입니다. bfsNextYear()를 실행한 후 벡터를 업데이트하고, 임의의 빙하 좌표에 대해 bfsGlacier()를 호출합니다. 

int solve() : 입력 처리 및 4번의 과정을 담당합니다.

ㄹ 모양, U모양 , 도넛모양, L모양 등의 랜덤 데이터로 테스트 해보았는데 아직까진 반례를 찾지 못하였어요...

도움 주시면 감사하겠습니다!

nahwasa   4년 전

96번째줄 ret을 초기화하지 않으셔서 그렇습니다.

자바같은 경우 JVM위에서 돌아가니 환경과 상관없이 동일한 실행이 보장되나, C나 C++ 등은 

ide에 따라 처리방식이 다르므로, 그냥 지역변수는 모두 초기화 이후에 사용하시는 습관을 추천드립니다.

https://ideone.com/OmHMDF


sharkpharaoh   4년 전

[해결] nahwasa 님 말씀대로 ret을 초기화 하지않아서 생긴 문제였습니다.


아... 꼼꼼히 확인한다고 확인했는데 ㅠㅠ 결국 기초적인 실수를 해버렸네요

코드 봐주시면서 허탈하셨을 것 같아 죄송합니다.

피드백 감사드립니다!

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