알고리즘 강의를 보다가 C++로 갈아타고자 마음을 먹고, C로 풀었던 문제들을 C++로 다시 풀면서 강사님의 코드와 비교해봤다.
위의 두 줄이 포함되어있어, 바로 검색해봤다.
한 줄로 설명하자면, "입출력 속도가 빨라지고, 그로 인해 시간 초과로 틀렸던 문제가 맞는 경우가 있어서" 이다.
❓ ios::sync_with_stdio(0)
C, C++ 표준 stream의 동기화를 비활성화하는 코드이다.
C++에서도 C언어처럼 printf, scanf를 사용하는 경우가 있었는데, 비활성화 하게되면 이를 사용할 수 없다.
대신, C++ 스타일 코드만 사용해 기존 동기화 과정에서 필요하던 시간이 절약되어, 입출력 속도가 빨라진다.
💥 입/출력으로 cin, cout만 쓰자
❓ cin.tie(0)
cin.tie 자체는 cin, cout이 하나로 묶어주는 역할을 한다.
std::cout << "Enter name:";
std::cin >> name;
즉, Enter name: 이 출력된 후, 이름을 입력할 수 있다.
하지만, cin.tie(0) 이나 cin.tie(null)을 추가해주면, Enter name: 이 출력되기 전에 이름을 입력할 수 있다.
따라서, 내부적으로 cin, cout을 묶어주는 과정을 수행하지 않기 때문에 시간이 절약된다고 한다.
💥 프로그램을 실행할 때는 자연스럽지 못할 수 있지만, 알고리즘 문제를 풀 때는 크게 상관없으니 사용하자!
❗ tip
scanf, printf가 cin, cout 보다 속도가 빠르다는 것은 알고 있었다.
- 하지만, 위의 ios::sync_with_stdio(0); cin.tie(0); 두 줄을 추가한 뒤 cin, cout을 사용하면 기존 scanf, printf 속도보다 빨라진다고 한다.
- 입/출력시 개행할 때 endl 대신 '\n'을 사용하면 시간을 더 절약할 수 있다고 한다.
'📚 STUDY > 📈 알고리즘' 카테고리의 다른 글
[프언] C에서 C++로 갈아타기 (2) | 2025.03.05 |
---|---|
Diamond-Square Algorithm (1) | 2025.02.21 |