백준 - C, C++/04. while문
[C언어] 백준 10951번 : A+B - 4
ImJay
2020. 9. 24. 00:02
반응형

백준 10951번 : A+B - 4
- 사용언어 : C언어
1. 문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
2. 코드
#include <stdio.h>
int main(void) {
int a,b;
while(scanf("%d %d", &a, &b)!=EOF) {
printf("%d\n", a+b);
}
}
3. 풀이
문제를 읽고 처음엔 조건이 사라져서 이게 왜 10952번보다 뒤에 있을까 개꿀이다~하고 풀었는데 출력초과..
여러분도 저처럼 뉴비시라면 이 문제를 검색한 것에 부끄러워하지 마세요.
어떻게하면 풀 수 있을까 고민하다가 결국 EOF를 모르면 못 풀었다는..
scanf가 while문안에 들어 갈 수 있다는 사실도 처음 알았네요.
C언어는 운영체제와 상관없이, 파일의 끝에 도달했을 때 언제나 특별한 값을 반환하도록 합니다.
EOF는 End Of File의 약자로 파일의 끝을 표현하기 위해 -1로 정의된 상수입니다.
즉, scanf("%d %d", &a, &b)!=EOF의 의미는 파일의 끝에 도달할 때까지 while문을 실행한다는 의미입니다.
출력초과가 나왔던 이유는 우리가 while문의 끝을 정해놓지 않았기 때문에 scanf가 무한루프 돌아서 메모리 할당 범위를 넘어섰기 때문이에요.
벌써 어렵다 ...ㅠ
반응형