Algorithm/Baekjoon

[백준 1920] c++/ 시간 초과 해결 - endl보다 \n가 속도 빠름

say! 2024. 7. 13. 14:43
728x90

//백준 1920 - 수 찾기
#include <iostream>
#include <algorithm>
using namespace std;

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

  int n;
  cin >> n; // 자연수 개수 입력받기

  int* num = new int[n];
  for(int i = 0; i < n; i++)
    cin >> num[i];

  sort(num, num + n);
  
  int m, find;
  cin >> m;
  for(int i = 0; i < m; i++){
    cin >> find;
    cout << binary_search(num, num+n, find) << '\n';
  }

  delete[] num;

  return 0;
}

 

시간 초과 날까봐 일부러 아래와 같이 작성했는데도 시간 초과가 나왔다.

ios_base::sync_with_stdio(false);
  cin.tie(NULL);

 

원인은 endl이었다. endl은 버퍼를 비우기 때문에 \n보다 시간이 더 걸린다고 한다. 

cout << binary_search(num, num+n, find) << endl;

 

+ 시간 단축을 위해 #include <cstdio> scanf, prinf를 사용하는 방법도 있다고 한다.