본문 바로가기

PS 풀이 및 정리/PS 기초

C++언어의 빠른 입출력 및 내가 사용하는 코드 기본 템플릿

C언어의 형식지정자 외우기 싫어서 C++의 cin,cout을 표준 입출력을 사용하는데, 사용하다보면 분명 알고리즘 시간복잡도는 시간초과가 안나야 정상인데 시간초과가 나는 경우가 있다.

 

https://www.acmicpc.net/problem/15552

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net

 

여기 설명이 잘 되어있고  문제를 풀어보면 된다. 

그래서 나도 웬만한 코드 짤때는 기본적으로 ios::sync_with_stdio(false),cin.tie(NULL) 이거 2개 int main 안 맨위에 적어두고 코드를 짠다. 단, 단점은 ios::sync_with_stdio(false)를 써버리면 printf랑 scanf를 cin,cout과 같이 못쓴다는 단점이 있기는 한데, 개인적으로 필요성을 느낀적은 없었던 것 같다. 

 

또, 사용하면 편한 bits/stdc++.h 헤더 파일이 있다. 웬만한 헤더파일은 다 들어가 있으니 사용하면 편하고 코드가 헤더에서 길어질 일이 없다. 하지만 그만큼 컴파일 속도가 약간 느려지기는 한다. (처음 공부하는 사람들은 헤더파일을 하나하나 적어보면서 어떤 헤더에서 무엇을 사용할 수 있는지 알아두는 것도 좋을 것 같다.)

나는 한번씩 long long 범위 체크하기 귀찮아서 그냥 바로 typedef long long ll; 선언해두고 거의 모든변수 long long 타입으로 쓰기도 한다. 하지만 메모리 초과 걱정도 해줘야하기 때문에 장단점이 있는것 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
#define f first
#define s second
 
using namespace std;
 
typedef long long ll;
typedef pair<ll,ll> pi;
 
ll n;
 
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n;
    
    return 0;
}