풀이
이보게 풀이를 찾아온 자네!
입력을 어떻게 받을지 고민하는 표정이군.
scanf
는 입력 파일의 끝을 만나면 End Of File (EOF)
를 리턴한다네.
그리고 EOF
는 대부분의 컴파일러에서 상수값 -1
로 정의되어있지! (컴파일러 마다 다르게 동작할 수도 있네만)
대부분의 환경에서 -1
은 int형에서 111..111(2)
로 저장된다네. (부호 비트가 1로 켜지는 셈이지!)
자세한 것은 위키피디아를 참고하게나.
따라서 111...111(2)
를 ~
연산자로 비트반전 시켜주면 0
이 된다네!
그러므로 EOF
를 만나면 while (0)
이 되어 반복문이 종료되는 것이지!
하지만 바람직한 풀이는 while (scanf() != EOF)
를 사용하는 것이니 참고하게나.
…
죄송합니다
코드
#include <stdio.h>
int a, b, s, m;
int main() {
while (~scanf("%d %d", &a, &b)) {
s -= a;
s += b;
m = m > s ? m : s;
}
printf("%d", m);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이