auto& tmp를 하면 q.front()에 있는 값을 reference로 담아두는데 q.pop()을 해버리면 해당 주소의 값이 변하지 않는다는 보장이 없으므로 오답 혹은 런타임에러가 발생할 수 있습니다.
3이 운좋게 정답이 나온거고 1, 3은 모두 잘못된 코드입니다. 참조자를 이용하지 말고 그냥 auto tmp로 받는 것이 좋아보입니다.
15971번 - 두 로봇
auto& tmp를 하면 q.front()에 있는 값을 reference로 담아두는데 q.pop()을 해버리면 해당 주소의 값이 변하지 않는다는 보장이 없으므로 오답 혹은 런타임에러가 발생할 수 있습니다.
3이 운좋게 정답이 나온거고 1, 3은 모두 잘못된 코드입니다. 참조자를 이용하지 말고 그냥 auto tmp로 받는 것이 좋아보입니다.
댓글을 작성하려면 로그인해야 합니다.
sys0927 4년 전 1
이 코드들이 어떤 차이가 있는지 모르겠습니다.
1. auto&로 받은 후 pop()한 다음 값 할당 채점번호 18448469
2. auto&로 받은 후 값 할당 후 pop() 채점번호 18448485
3. auto&로 받은 후 pop()한 다음 값 할당 (struct Node에 있는 변수 sum의 타입을 int에서 ll으로 바꿈) 채점번호 18448428
이 문제에서 오버플로우는 없기 때문에 3가지 경우 모두 같은 결과가 나와야 한다고 생각하는데 결론적으로 2, 3번은 정답인데 1번이 오답입니다. 아래에는 틀리는 1번 코드를 첨부하겠습니다.