alexroh   3년 전

안녕하세요, PS를 막 시작한 초보 중의 초보입니다.

이 질문은 어쩌면 아주 기초적인 질문일지도 모르겠습니다.

질문 게시판에서 해당 문제에 대한 반례들을 찾은 뒤, 아래 케이스로 테스트해 보았습니다.

10 10

4 9 1 7 2 3 10 6 8 5

이걸 그대로 devcpp에 입력하고 실행시켜 보았더니 결과가 정답인 15로 잘 나왔습니다.

(devcpp 컴파일러는 C++14를 사용하고 있습니다.)

preview

하지만 온라인 컴파일러 사이트인 ideone.com에서는 같은 코드에서 다른 결과가 나옵니다.

(마찬가지로 C++14를 선택하고 컴파일했습니다.)

https://ideone.com/eG3YEx

preview

같은 코드임에도 불구하고 이처럼 결과가 달라지는 이유를 잘 모르겠습니다.

코드 전문을 아래에 첨부합니다.

alexroh   3년 전

왜 틀렸는지 대강 실마리를 잡았습니다!

리스트의 멤버 함수 중 end()를 그대로 대입해서 사용해서 그런 것 같습니다.

end()는 맨 마지막 원소 다음 자리를 가리킨다는 것을 잊고 있었습니다.

shg9411   3년 전

그럴 수 있다고 생각해서 연산자로 하나 줄여봐도 똑같네요.

왜인지는 모르겠지만 list 대신 deque 쓰면 15가 제대로 출력되네요.

그리고 cin.tie, sycn_with_stdio 해제하시고 printf등 사용하시면 안됩니다.

alexroh   3년 전

위 코드에서 아래 부분으로 수정하여 제출했더니 맞았습니다.

cin.tie, sync_with_stdio는 예전에 누가 말해준 기억으로 아무 생각 없이 추가하고 있던 것인데 알려주셔서 감사합니다.

deque는 아직 공부하지 않아서 사용하지 않았습니다만 한번 해보도록 하겠습니다.

빠른 질문 답변 감사드립니다.

shg9411   3년 전

https://www.acmicpc.net/board/view/8074

이 글 보시면 cin.tie, sync_with_stdio 부분은 충분할 것 같습니다.

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