코드 복사/붙여넣기 하는 당신이 아름답습니다.

2460 : 지능형 기차

풀이

이보게 풀이를 찾아온 자네!

입력을 어떻게 받을지 고민하는 표정이군.

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, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-01-25 12:39

Read more posts by this author