[boj] c언어 - 10950번(A+B-3)

2383 단어 BOJ 문제BOJ 문제

10950 A+B-3

boj 문제 - 단계별로 풀어보기 - 3단계 - 3

문제

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

입력

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

출력

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

풀이

문제 예제 출력에서는 입력을 따로 한번에 받고 출력도 한번에 하듯이 되어있었기 때문에 무조건 그렇게 해야 하는 줄 알고 애를 먹었다. 그래서 나는 개수 t에 따라 입력 for문과 출력 for문을 따로 적었는데 이것 때문에 자꾸 틀렸다.

내가 시도한 잘못된 방법_1

#include <stdio.h>
int main()
{
  int t; // 개수 선언
  scanf("%d", &t);
  int a, b; //입력 받을 두 수
  for(int i=1; i<t; i++)
    {
      scanf("%d %d\n", &a, &b);
    }
  for(int j=0; j<t; j++)
    {
      printf("%d\n",a+b);
    }
  return 0;
}

이렇게 하면 입력은 한번에 받아지는데 결과값 출력이 제대로 안된다. 결과값이 다 똑같은 수로 나오길래 그 다음엔 입력 for문 안에 출력 for문을 한번 넣어보았다.

내가 시도한 잘못된 방법_2

#include <stdio.h>
int main()
{
  int t; // 개수 선언
  scanf("%d", &t);
  int a, b; //입력 받을 두 수
  for(int i=1; i<t; i++)
    {
      scanf("%d %d\n", &a, &b);
      for(int j=0; j<t; j++)
    	{
      		printf("%d\n",a+b);
    	}
  return 0;
}

물론 이렇게 하면 입력도 제대로 안되고 출력도 제대로 안된다..
난 처음에 입력을 한번에 다 받을 수 있는 방법에 초점을 두었는데, 이것 저것 시도해보아도 다 제대로 출력이 안되길래 구글링을 해보았다. 그랬더니 입력과 출력 스트림은 별개라서 입력받고 출력하고 입력받고 출력하는 반복이 되어도 괜찮다고.. 적혀있었다... 그래서 간단하게 for문 안에 scanf와 printf를 같이 쓰며 입력받고 출력하는 방식으로 했더니 해결되었다..!

소스 코드

#include <stdio.h>
int main()
{
  int t; //개수
  int a, b;
  scanf("%d", &t);
  for(int i=0; i<t; i++)
    {
      scanf("%d %d", &a, &b);
      printf("%d\n",a+b);
    }

  return 0;
}

메모

입력 스트림과 출력 스트림은 별개이기 때문에 입력하고 바로 그 결과를 출력하여도 괜찮다.

한번에 입력값을 받아야 하고, 한번에 출력값을 적어야 한다고 착각하여 for문을 2개 쓴 것이 문제점..

좋은 웹페이지 즐겨찾기