코딩테스트 문제를 풀 때 맞는 문제의 맞는 알고리즘을 썼고, 최적화를 했지만 시간 초과가 난다면!
아래 방법을 사용해 보는 것을 추천한다!
1. ios_base::sync_with_stdio(false)
첫 번째 방법은 위의 코드를 main 초반에 써주는 것이다! C++의 'cin'과 'cout'와 C의 'scanf'와 'printf'는 기본적으로 입출력 버퍼를 동기화하도록 설정되어 있다고 한다. 하지만 입출력 속도를 저하시킬 수 있으므로 'ios_base::sync_with_stdio(false)'를 사용하여 입출력 버퍼 동기화를 해제하면 입출력 속도가 향상된다.
**주의할 점은 위의 설정 이후에는 C++의 cin 및 cout과 C의 scanf 및 printf를 함께 사용하지 않도록 해야 한다.
2. cin.tie(NULL)
'cin'과 'cout'이 둘 다 연결되어 있을 때, 입출력 버퍼의 동기화로 인해 입출력 속도가 저하될 수 있다고 한다. 'cin.tie(NULL)'을 이용하여 cin과 cout의 연결을 해체해 입출력 속도를 향상한다.
3. '\n' 사용하기
개행문자를 출력할 때 'endl' 대신 '\n'으로 출력하는 것이다. 'endl'은 개행문자 출력 기능 외에도 출력 버퍼를 비우는 역할을 한다. 따라서 버퍼를 비우는 작업은 입출력 속도를 저하시킬 수 있으므로, '\n'의 사용하여 개행문자를 출력하는 것이 더 효율적이다.
추가로 꿀팁은!
ios_base::를 ios::만 써도 괜찮다고 한다!
false랑 null은 다 0으로 쓸 수 있으니
ios::sync_with_stdio(0); cin.tie(0); 로 쓴다면 시간절약!!☀️
'개발 > C, C++' 카테고리의 다른 글
[C] fork 함수란? | fork() function in c | 리눅스 (1) | 2024.12.18 |
---|---|
[C] malloc() calloc() 차이점, 동적메모리할당 (0) | 2024.11.26 |
[C] C언어에서 힙 메모리와 스택 메모리 (0) | 2024.11.25 |
[ C++ ] C++의 단짝 STL 🧏🏻♀️ (0) | 2024.01.13 |
[C언어] 프로그래밍 개론/C언어 개론 (0) | 2023.06.23 |