티스토리 뷰

10951번 - A+B - 4
https://www.acmicpc.net/problem/10951
#include <stdio.h>

int main()
{
	int A, B;
	bool C = true;

	while(scanf("%d%d", &A,&B) != EOF)
	{
			printf("%d\n", A + B);
	}
}
메모리시간코드 길이
11120130

📕 오답 노트

#include <stdio.h>

int main()
{
	int A, B;
	bool C = true;

	while(C)
	{
		scanf("%d%d", &A, &B);
		printf("%d", A + B);
	}
}

틀린 코드

사유 : 출력 초과

출력 초과…?

이 문제가 어떤 걸 요구하는지 잘 봐야한다. 문제를 같이 살펴보도록 한다.

10952번 문제
10951번 문제

언뜻 보면 바로 전에 풀었던 10952번 문제 : A+B - 5와 다를 게 없어보인다.

🙋 더 알아보기

다음과 같은 코드도 가능하다.

#include <stdio.h>

int main()
{
    int A,B;
    while (scanf("%d%d",&A,&B)!=-1)
    {
        printf("%d\n", A+B);
    }
}
메모리시간코드 길이
11120124

위에 있는 정답 코드와 딱히 다른 건 없다. 다르다면 EOF 대신 -1을 썼다는 것이다.

왜 가능할까?

코딩교육 티씨피스쿨
기본적인 입출력 C언어에서는 기억장치에 저장되는 파일을 다루는 것과 마찬가지 방식으로 입출력 장치를 다룹니다. 따라서 키보드, 모니터와 같은 대부분의 콘솔 장치도 C 프로그램에서는 자동으로 열리는 파일처럼 다뤄집니다. C언어에서는 stdin 표준 스트림을 통해 입력 장치를 다루며, stdout 표준 스트림을 통해 출력 장치를 다루게 됩니다. 스트림(stream) C 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 것을 통해 다룹니다.
http://www.tcpschool.com/c/c_string_io

EOF의 실제 값이 -1이기 때문이다. 처음 코딩을 배웠을 때는 신경 안 썼던 부분들의 중요성이 점점 드러나는 거 같다.

#include <iostream>
using namespace std;

int main() 
{
    int A, B;
    while (cin >> A >> B)
		{
        cout << A+B << '\n';
    }
}
메모리 (KB)시간 (ms)코드 길이 (B)
20204135

위 코드가 잘 작동하는 이유는 EOF 때문인지 아닌지는 잘 모르겠지만 A, B가 int 자료형임에도 불구하고 char로 적었기 때문에 잘못된 값을 입력 받아 종료되었다.

잘 된다… 항상 느끼는 거지만 입력 조건을 안 지켜도 맞을 때 기분이 이상하다. 문제 출제 의도가 맞은 코드이고, 입력 조건은 그저 사용자에게 입력을 맡기는 부분이라 그런가? 마치 “금액을 적어주세요” 라는 int 자료형을 입력 받는 곳에 굳이 “ㅁㄴㅇㄹ”와 같은 char 혹은 string 자료형을 쓰는 것처럼… 개발자가 정해놓은 기준을 무시하는 사용자의 모습

#include <stdio.h>

int main() 
{
    int A, B;
    while (scanf("%d%d", &A,&B))
	{
        printf("%d", A+B);
    }
}

출력 초과

이전 문제들에서는 for 때는 입력 횟수에 제한인 테스트 케이스 값이 있었고, 바로 이전 문제인 19052번 문제는 조건이 있었다. 현재 문제는 이렇게 반복문을 나올 조건이 따로 없다. 그래서 While에 들어가지 않을 조건이 있으면 해결된다.

아… 멍청이…

문제 설명에 이렇게 힌트를 대놓고 줬는데… 이제서야 보다니… 앞으로는 문제 설명도 잘 읽어야겠다…


Uploaded by N2T

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
링크
Total
Today
Yesterday