[백준] 빠른 A+B 15552

Soohyeon B·2022년 10월 17일
0

알고리즘 문제 풀이

목록 보기
10/70

풀이

문제에서

C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.

이게 무슨 소리냐, 문제에서 입출력 양이 많아지면 입출력을 하는데 소모되는 시간이 많아져서 시간 초과가 발생한다고 한다. 때문에 이를 방지하기 위해서 해당 두 줄을 입력한다.

ios::sync_with_stdio(false);
cin.tie(null);
  • ios::sync_with_stdio(false);
    해당 코드는 c와 c++의 표준 stream의 동기화를 비활성화한다. 즉, c와 c++ 스타일을 혼합하여 사용할 수 없다. 대신에 C++ 스타일 코드만 사용하면 기존 동기화 과정에서 필요하던 시간이 절약되어 입출력 속도가 빨라지는 효과가 있다고 한다.
  • cin.tie(null);
    해당 코드는 평소에 cin과 cout을 묶어준다고 한다.
    평소에는 cin과 cout이 하나로 묶여져 있어서
    cout이 모두 출력되고 난 후 cin을 입력할 수 있다고 한다.
    하지만 cin.tie(0)이나 cin.tie(null)을 입력하면 cout이 모두 출력되기 전에 cin을 입력할 수 있다고 한다. 이런 과정에서 cin과 cout을 묶어주는 업무를 수행하지 않기 때문에 시간이 절약된다.
  • 결론
    그냥 c++을 사용할 때보다 입출력 속도가 훨씬 빨라진다.

풀이1

#include <bits/stdc++.h>
using namespace std;


int main (void){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    
    int n;
    cin >> n;
    while(n--){
        int a,b;
        cin >> a>>b;
        cout << a+b << "\n";
    }
    
}


참고

https://dingcoding.tistory.com/m/62

profile
하루하루 성장하는 BE 개발자

0개의 댓글