10951번 문제입니다.
저는
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include<iostream> using namespace std; int main() { int A, B; while (1) { while (1) { cin >> A; if (A <= 0) { rewind(stdin); } else { break; } } while (1) { cin >> B; if (B >= 10) { rewind(stdin); } else { break; } } cout << A + B<<endl; } return 0; } | cs |
처음에 이렇게 풀었는데, 출력초과 결과가 나왔습니다. 종료 조건이 따로 명시되어 있지 않아서 계속해서 받을 수 있게 했는데, 그게 아니었나 봅니다.
EOF를 이용해야하는 문제라고 합니다.
그래서 재코딩 해보았습니다.
근데, 계속해서 scanf_s에서 컴파일에러가 나서 stdio.h 헤더도 추가해보고, 삽질 엄청했는데..
백준은 scanf_s가 적용이 안되는 것 같습니다..
그냥 scanf_s를 scanf로 고쳐주니 정답처리 되었습니다
이 글을 보시는 분들은 이걸로 삽질하지 마세요~!
정답처리된 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include<iostream> #include<stdio.h> using namespace std; int main() { int A, B; while (scanf("%d %d", &A,&B)!=EOF) { cout << A + B << endl; } } | cs |
*참고로 EOF에 대해서 설명을 드리자면,
scanf는 입력받은 갯수를 리턴합니다.
만약에 scanf("%d",&A); 에서 입력이 제대로 들어왔다면 1이 리턴됩니다.
scanf("%d %d",&A,&B); 입력이 제대로 들어왔다면 2가 리턴되겠죠??
그리고 에러가 발생하거나 EOF(End Of File) 파일의 끝을 만나면 -1을 리턴합니다.
EOF는 상수 -1로 정의가 되어있습니다.
'백준 문제풀이 (C++) > 입출력' 카테고리의 다른 글
[백준 입출력 풀이] 11718번, 11719번 C++ (0) | 2020.08.06 |
---|---|
[백준 입출력 풀이] 11021번 C++ (0) | 2020.08.06 |
[백준 입출력 풀이] 10953번 C++ (0) | 2020.08.06 |
[백준 입출력 풀이] 10952번 C++ (0) | 2020.08.06 |
[백준 입출력 풀이] 2557, 1000, 2558, 10950 C++ (0) | 2020.08.05 |