
문제는 위와 같다. 비슷한 유형의 문제가 여럿 있었어서, 처음에는 대충 문제를 훑어보고 읭? 했다.
그런데 테스트 케이스의 개수가 주어지지 않는다는 차이점이 있었다...!
그래서 EOF(End Of File)을 활용하는 것 같다는 생각이 문득 떠올랐으나, 코드를 끄적여보니 생각보다 쉽게 답이 나오지는 않았다.
해법을 찾아보다가 전혀 모르던 사실을 발견했다...
scanf는 함수를 실행하여, 저장에 성공한 데이터의 개수를 리턴한다. 만약 EOF를 입력 받거나 에러가 발생하면 -1를 리턴한다.
# include <stdio.h>
int main(void) {
int a; // scanf 함수의 리턴값을 저장할 변수
int n1, n2;
a = scanf("%d %d", &n1, &n2);
printf("return value of scanf function: %d\n", a);
return 0;
}
아래는 위 코드의 실행 결과이다.

처음에 1 3을 입력한 결과, 2개의 정수 저장 성공 -> 2 리턴
Windows의 End Of File인 ^Z(Ctrl + z) 입력 -> -1 리턴
위와 같은 사실을 활용하여 문제 해결!
아래는 제출한 코드이다.
int main(void) {
int n1, n2;
while (scanf("%d %d", &n1, &n2) == 2) {
printf("%d\n", n1 + n2);
}
return 0;
}