cleankid99   5년 전

안에 코드에 주석은 다 적어놓았어요

왜 1이 더 크게 나오는지 모르겠어요....

한번 디버깅 같이 해주실 수 있으실까요..??

seico75   5년 전

53 라인 루프 안에서 3가지 문제가 있는 것 같습니다.


1번째.

63라인에서 pop_back를 하는데, 전체가 길이가 5 이고, l = 2 이면... 1, 2, 3, 4, 5  를 가진다고 하면

1, 2, 11, 4, 5 가 되고 1, 2, 4, 5, 11 이 된 후 pop_back 해서 1, 2, 4, 5 가 남습니다.

for 루프가 다시 시작되면 이제 길이는 4가 되고 l은 하나 증가 3이 되어서 '5'를 가리킵니다. 

즉, '4'에 대해서는 처리가 skip 됩니다.  

2번째.

1, 2, 4, 5, 6  의 나무가 있을 때 양분은 6이라고 가정을 하면

1, 2는 양분이 있으니 l=2으로 for 진입하면

2, 3, 4, 5, 6 이 되고 양분은 3이 남죠.  4는 죽으면서 2의 양분을 남기면

5에 대해서 처리할 때 (1번째 경우를 해결했다고 하면..) 양분은 5가 된 상태여서 5인 나무가 안죽고 양분을 먹게 됩니다.

이것은 문제에서 의도한 바가 아니기 때문에 한번 나무들이 죽기 시작하면 뒤는 다 죽이거나 

봄과 여름을 분리하거나 해야할 것 같습니다.

3번째

죽은 나무를 11이라고 했는데, 나무나이가 11보다 작다는 가정을 할 수 없을 것 같습니다.

결론은...

나무가 죽기 시작하면 loop 빠져나가서 다 죽이고, pop_back 하면서 양분을 만들어 버리는 것이 어떨까요?

그리고 정답을 맞추고 나시면 다른 분을 코드를 꼭 한번 보세요. 

cleankid99   5년 전

댓글 달아주셔서 감사합니다!!

저도 계속 코드를 리뷰하면서 보니

그런 문제가 있어서

아예 수정을 해봤는데

이제는 마지막 예제의 답이 91이 나오더라구요..

근데 제가 직접 손으로 다 일일이 해봤는데 똑같이 91이 나오던데

어떻게 85가 나오게 된건지 모르겠어요,,,ㅠㅠ

seico75   5년 전

제가 위에 남긴 글의 2번째 부분이 아직도 해결이 안되어 있습니다.

그리고, 29 번째 라인이 x, y가 맞는지 y, x 가 맞는지 확인해보셔야 할 것 같습니다.

이문제에 x,y r,c가 좀 헷갈리게 써 있어서요


cleankid99   5년 전

아....

한번 나무가 죽기 시작하면 다죽어야하는군요...

으아아아아아아아악

감사합니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

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