반응형


백준 - 단계별로 풀어보기 [10951] A+B - 4

https://www.acmicpc.net/problem/10951 

 

 

문제

 

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

각 테스트 케이스마다 A+B를 출력한다.

풀이

 

해당 문제는 입력을 마치는 조건이 없기 때문에, EOF 개념을 활용하여 풀어야 하는 문제이다.

EOF란 End Of File의 약자로, ASCII코드 값 -1을 가진다. 일반적으로 파일의 마지막을 만났을 때 EOF 값을 가져오지만, 입력을 직접 받아올 수도 있다. Ctrl+Z를 입력할경우 EOF 값인 -1이 getchar나 scanf를 통해 들어간다.

 

해당 문제는 개인적으로, EOF 조건에 대한 부연설명이 미흡했다고 생각한다. 

입력의 개수가 주어지지 않는 경우, 일반적으로 EOF를 활용하여 처리를 한다고 한다.

EOF를 체크하는 방법은 간단하다.

while(scanf("%d %d", &a, &b) != EOF){...}

위와 같은 반복문 처리를 해주면 EOF까지만 입력을 받을 수 있다.

 

 

코드

 

#include <cstdio>

int main() {
    int a[1000];
    int b[1000];
    int i = 0;
    while(scanf("%d %d",&a[i],&b[i]) != EOF)
    {
        i++;
    }

    for(int j = 0; j < i; j++)
    {
        printf("%d\n",a[j]+b[j]);
    }
    return 0;
}

 

 

 

평가

 

EOF 개념이 생소하다면 입력이 끝나는 조건을 어떻게 프로그램이 알게 할 것인지에 대해서 고민에 빠질 수 있는 문제이다.

이번 문제도 정답비율 38%로 유독 낮은 정답률을 가지고 있었다.

EOF를 활용한 입력 종료를 학습하는 용도로 보면 좋을 것 같다.

 

 

 

 

 

 

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,