2022년 9월 25일에 작성됨
https://www.acmicpc.net/problem/10951
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제 분석
정수 A와 B를 입력받고, A + B 값을 출력해준다.
소스 코드 -1 (❌)
1#include <stdio.h>
int main()
{
int A, B;
while (1) {
scanf("%d %d", &A, &B);
printf("%d\n", A + B);
}
return 0;
}
<결과>
출력 초과가 떴다.
무한 반복문의 끝을 정해주지 않아서 메모리의 할당 범위를 벗어났기 때문!
소스 코드 -2 (⭕)
#include <stdio.h>
int main()
{
int A, B;
while (scanf("%d %d", &A, &B) != EOF) {
printf("%d\n", A + B);
}
return 0;
}
코드 분석
while의 조건문에 EOF를 써주어 무한 루프로 인한 출력 초과를 방지한다.
✍️ EOF(End of file)란?
파일의 끝을 표현하기 위해 매크로로 정의된 상수를 의미한다. C언어에서는 항상 -1을 반환한다.
EOF는 주로 입력이 없을때 파일을 종료하기 위해 사용된다.
end
이 문제를 통해 알게된 것이 많다..
1. 반복을 멈추는 조건 없이 무한 루프를 쓰게 되면 출력 초과가 뜬다는 것.
2. while의 조건식 안에 scanf와 저런 비교 식을 쓸 수 있다는 것.
3. EOF에 관한 것.
처음에 출력 초과 뜨고 문제를 여러번 다시 읽어 봤는데 모르겠어서 검색해봤더니 나와 같은 사람이 많아서 웃겼다ㅋㅋㅋ 나도 전 문제보다 쉽네 개꿀~!! 하면서 풀었는데ㅋㅋㅋㅠ
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[Python]백준_1340 : 연도 진행바 (0) | 2023.08.16 |
---|---|
[C]백준_2742 : 기찍 N (0) | 2023.08.15 |
[C]백준_10952 : A+B - 5 (0) | 2023.07.19 |
[C]백준_2439 : 별 찍기 - 2 (0) | 2023.07.18 |
[C]백준_10871 : X보다 작은 수 (0) | 2023.07.17 |