progress   4년 전

내 컴퓨터에서는 되는데, 제출하면 틀리는 경우도 없습니다. 더 많은 예제를 입력해보세요.

  • Visual Studio에서는 되는데, 이클립스에서는 되는데, 엑스코드에서는 되는데, 실행은 되는데, 제 컴파일러에서는 되는데, gcc에서는 되는데, 등등의 표현도 사용하지 말아주세요.

정말 죄송한데요, 그런 일이 일어났습니다.

이것이 저의 부족한 실력 때문일 가능성이 큰데, 너그럽게 글을 읽어주셨으면 좋겠습니다.

먼저 처음부터 말씀드리자면 (별 내용 없으니 패스하고 읽으셔도 됩니다)

-------

오늘 저는 "내가 못 푼 문제"란을 발견하고

쉬운 문제가 많아서 풀고 있었습니다.

그러던 중 문득 숏코딩이 생각났고

이정도 난이도면 나도 해볼까 하고 C++로 여러 시도를 해봤습니다.

그러던 중 다른 분들 코드를 보니까

#import<ios> 가 있더라고요.

처음 알았습니다.

보아하니 scanf와 printf정도 쓸 수 있더라고요

제가 지금 쓰는 IDE는 코드블럭입니다.

단점이 많지만 그냥 쓰고 있습니다.

중요한건 #import <ios>를 선언했는데

printf scanf가 안되더라고요.

백준은 되는데

그래서 다른문제 숏코딩을 시도할때도

코드블럭에서는 cstdio를 가져와서 쓰고

제출할때는 ios를 넣었습니다.

---------

제가 묻고 싶은것은

아래 코드가

코드블럭에서는 확실히 작동합니다.

GNU GCC컴파일러죠.

물론 #import<ios>지시문 대신

#include<cstdio>를 넣으면 말이죠.

하지만 백준에서의 ios와 제 코드블럭의 cstdio는 두 함수만을 쓴다는 점에서는 동일하다고 생각합니다.

(물론 제가 본 바로만요) 그래서 위에 구구절절 쓴 거고요.

그럼 완전히 동일한 두 코드(다른 지시문을 가진)는

같은 동작을 해야 하는데,

백준에서는 C++, C++11, C++14, C++17로 제출해도

틀렸다고 합니다. (C++에서는 컴파일 에러)

아무리 다른 플랫폼이지만

뭔가 다른 문제가 있는 건 아닐지, 조심스럽게 물어봅니다.

원래 백준에서는 안된다고 해도 뭐 할 말은 없지만...

제 코드가 문제라면 왜인지 좀 질문하겠습니다.

kipa00   4년 전

  • C++ 등의 언어에서는 함수에 들어가는 인자가 판단되는 순서는 unspecified behavior입니다. 즉, a+b가 먼저 실행될 수도, scanf(...)가 먼저 실행될 수도 있습니다.
    • scanf 이후 a+b가 실행된다면, 입력의 줄 수만큼 출력하기 때문에 틀린 코드입니다.
    • a+b 이후 scanf가 실행된다면, 맨 처음에 쓰레기 값을 출력하기 때문에 틀린 코드입니다.
  • 어떻든 printfscanf가 묶여 있기 때문에 입력의 줄 수만큼 출력합니다. 일단 예제가 안 그렇다는 사실을 유념하세요.

내 컴퓨터에서는 되는데 제출하면 틀리는 경우가 없는 것은 아니지만 극히 드뭅니다.

이런 주장을 하실 때 앞으로는 레퍼런스 체크를 통해 정확한 근거를 가지고 설명하시기를 부탁드립니다.

progress   4년 전

설명 감사합니다.

마지막에 0이 출력되는걸 못봤네요.

밤새 시간을 많이 쓰다보니 짜증나기도 하고 그래서 질문했습니다.

제목 어그로는 답변 없을까봐 넣은거라서 삭제했습니다.

배울 것이 많은 것 같습니다.

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