akaishuichi   4년 전

채점번호 :  16194192

1분에 과제가 주어지지 않을 때 더이상 입력을 받을 수 없는 오류가 뜨는 코드가 통과됩니다.

테스트 데이터

3

0

이 이후로 오류..

juchan1220   4년 전

http://www.cplusplus.com/reference/deque/deque/front/

해당 소스를 확인해 본 결과, 처음에 과제가 주어지지 않는 경우를 처리하지 않아 빈 deque 에 접근하는 것으로 보입니다.

빈 deque의 front 함수 호출은 Undefined Behavior 이기 때문에 컴파일러에 따라 오류가 발생하여 프로그램이 종료될 수도 있고 쓰레기 값이 담긴 레퍼런스를 반환할 수도 있습니다.

UB로 인해 얻은 쓰레기 값이 결과에 영향을 미칠 확률 (쓰레기 값이 1이여서 전위 감소 연산자 처리 후 0이 될 확률) 이 매우 적기 때문에 통과하게 됩니다.

데이터를 추가한다고 해당 UB에 영향을 주어 걸러낼 수는 없으니 데이터를 추가할 필요는 없어 보입니다.

pch6828   4년 전

출제자입니다.
이미 질문자 분이 말씀하신 1분째에 과제가 주어지지 않는 경우는 데이터가 존재함을 확인했습니다. 그럼에도 AC를 받은 것은 위의 juchan1220 님이 설명하신 UB 때문인 것으로 보입니다.

akaishuichi   4년 전

아하 감사합니다 !

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