dltkdtn56   2년 전

선언만 하고 쓰이지도 않는 9번째 줄의 MAP 배열을 선언하면 맞았습니다. 를 받아 통과할 수 있고

MAP배열을 선언하지 않고 나머지는 모두 똑같은 코드를 사용하면 틀렸습니다.가 뜨며 통과되지 않습니다.

아무리 생각해도 잘 모르겠습니다. 무엇이 문제인지 알 수 있을까요?? 

djm03178   2년 전

n이 최대 100인데, 입력을 받을 때 a != b이면 V에 두 개씩의 원소를 넣고 있습니다. 따라서 V.size()는 최대 200이 됩니다.

이 크기만큼 루프를 돌면서 Select[i]에 접근하고 있는데, Select의 크기는 101이므로 배열의 범위를 초과하여 접근하게 됩니다. 이는 undefined behavior이므로 무슨 일이 벌어질지 알 수 없게 됩니다. https://www.secmem.org/blog/20... 를 참고하세요.

MAP의 유무로 정답이 갈리는 현실적으로 가능성이 높은 이유는, 메모리 주소상 Select 직후에 MAP이 오게 되어 '방파제'의 역할을 해주었기 때문일 수 있습니다. 이게 없다면 매우 중요한 다른 변수의 값을 건드렸을 가능성이 큽니다.

dltkdtn56   2년 전

감사합니다! 바로 이해하고 해결하였습니다

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