본문 바로가기
알고리즘

백준 문제 풀이를 위한 기본 c++ 세팅(통합 라이브러리, 빠른 입출력)

by 코딩하는 여우 2024. 4. 27.

기본적으로 Visual Studio Code(줄여서 vsc)를 이용해서 코드를 작성하고 있습니다.

 

알고리즘 문제 풀이는 코딩 속도와 프로그램의 동작속도가 중요하기에 코드를 작성할 때 먼저 아래를 복사해 두고 시작합니다. (주의 : 오로지 문제 풀이를 위함입니다... 실무에서 쓰면 혼납니다..)

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

int main()
{
    ios_base::sync_with_stdio(0); 
    cin.tie(0);
    
    return 0;
}

 

 

하나씩 살펴봅시다.

#include <bits/stdc++.h>

c++ 통합 라이브러리 헤더입니다.

c++ 같은 경우 자주 쓰는 기능들이 <iostream>, <string>, <vector> 이런 식으로 여러 헤더파일로 흩어져 있는데 이것들을 모두 한번에 컴파일해주는 헤더입니다.

 

코딩속도가 중요한 문제 풀이 특성상 편하고 빠르게 사용할 수 있어요.

 

using namespace std;

 

기본적으로 라이브러리에 있는 기능들은 std라는 네임스페이스 안에 있어 접근하려면 std::cout, std::vector<int> 등 네임스페이스를 이용해서 접근해야 합니다.

 

이 역시 코딩속도를 높이기 위해서 생략해 줍시다.(알고리즘 문제 풀이에서는 생략해도 큰 문제가 없습니다.)

 

ios_base::sync_with_stdio(0);
cin.tie(0);

 

기본적으로 c++의 cin, cout 함수는 무거워서 느립니다.

그래서 입출력이 많은 문제를 풀 때 cin, cout를 쓰면 시간초과가 나오는 경우가 많은데 그때마다 넣기는 귀찮으니 항상 넣어두고 쓰네요.

동기화를 끊는다.. flush를 미룬다.. 이런 자세한 거는 따로 검색해 보시면 되고 단순히 문제 풀이에서는 입출력이 빨라진다! 정도로만 기억하시면 됩니다.

 

또 cout하실 때 endl보다  '\n'이 훨씬 빠릅니다. endl은 개행+버퍼비우기(flush)라서 느려요

 

주의할 점은 scanf, printf와 혼용해서 쓰시면 안 된다는 점이네요.

 

 

마지막으로 빠른 입출력을 써야 하는 문제입니다!

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

 

정답 코드

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

int main()
{
    ios_base::sync_with_stdio(0); 
    cin.tie(0);
    
    int T;
    cin >> T;

    while(T--)
    {
        int A,B;
        cin >> A >> B;
        
        int result = A+B;
        cout << result << "\n";
    }
    
    return 0;
}