+ Multilingual/C++

[C++] 빠른 입출력이 필요할 때 <iostream> vs. <stdio.h>

ᕕ(ᐛ)ᕗ 2025. 2. 21. 12:12

백준 15552번 빠른 A+B를 풀 수 있는 2가지 방법을 정리한다.

 

  • iostream을 활용해 cin, cout을 사용한 방법
  • stdio.h를 활용해 scanf, printf를 사용한 방법

 

1. cin/cout

6~7열에 있는 2줄을 추가하고, endl 대신 \n을 사용하면 cin/cout의 느린 동작을 개선할 수 있다.

그러나 이 방법을 사용하는 경우 같은 코드 안에서 scanf/prinf 등 C언어의 입출력 방식을 사용할 수 없다.

#include <iostream>
using namespace std;

int main() {
    cin.tie(NULL), cout.tie(NULL);
    std::ios_base::sync_with_stdio(false);

    int t, a, b;
    cin >> t;

    for (int i = 0; i < t; i++) {
        cin >> a >> b;
        cout << a + b << '\n';
    }
}

 

 

2. scanf/prinf

1번 방법에 비해 코드는 보다 간결해지고 메모리도 절반쯤 사용하지만, 처리 시간은 150%가 되는 방법이다.

2열은 단순히 경고 문구를 제거하기 위해 삽입한 내용이다.

(참고: https://akdl911215.tistory.com/167)

#include <stdio.h>
#pragma warning(disable:4996)

int main()
{
    int t, a, b;
    scanf("%d", &t);
    for (int i = 0; i < t; i++)
    {
        scanf("%d %d", &a, &b);
        printf("%d\n", a + b);
    }
}