rkana526   5년 전

도움을 요청하는 바입니다.

시간초과가 나는 것도 아닌듯하고

가장 의심되었던것은, 배열범위를 초과하여 접근 에러가 나는 것이어서 배열을 많이 생성해보았지만

그 문제가 아닌듯합니다.

아니면 어딘가 오류가 있을수도 있다고 생각합니다.

코드 첨부하겠습니다.

한번 살펴주시옵소서.

gaelim   5년 전

작성자님의 소스를 봤을 때, 처음에 이상한 점을 느끼지 못하여서 84번줄 88번줄을 주석처리하고 제출하니 맞았습니다.

그렇지만, 전혀 중요하지 않은 구문인데 왜 다른 결과를 낼까 살펴보니,

67 번줄에 if ( cur_num > cnt_chic) 이라는 조건이 불충분한 조건인 것을 알아냈습니다.

cur_num == cnt_chic 인경우 조건문을 빠져나와 함수 아래 부분인 visit[cur_num] 을 수행하고, chics[cur_num]에 접근해요.

그런데 visit[cur_num]  은 존재할 수 없습니다.  cnt_chic 은 1based 숫자이고 cur_num은 array에 접근해야하므로 0based 숫자에요.

아래 조건문을 한번보시고, 디버깅하느라 크게 잡아놨던 배열 등의 소스를 다시 줄이시는 것을 해보시면 될것같습니다.

gaelim   5년 전

틀린이유는 cur_num == 13일때 

visited[cur_num] = true; 

 int here_r = chics[cur_num].first;

 int here_c = chics[cur_num].second;

 map[here_r][here_c] = 2;

을 수행하고

map[here_r][here_c]= 0; 를 수행하는데

기본적으로 chics[cur_num].first = second = 0 이고

만약 map[0][0] = 1 인경우, cur_num이 13까지 갔을때 map [0][0] 에서 집을 지워버리니 틀린 정답을 내놓는 것 같습니다.

rkana526   5년 전

감사합니다

잘 해결했습니다

맨 처음 풀 때 치킨집을 벡터에 따로 저장하지 않고 

map 에서 지웠다가 개장하는 식으로 작성했던 흔적이 남아있었네요

저 코드에서 map 을 0 으로 했다가 2 로 만들어주는건 의미없는 것이고, 

cur_num == cur_chic 일 때 가정집을 있지도 않은 치킨집이라고 판단하여 잘못 접근했었던 거군요.

덕분에 이해하였습니다. ^_^

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