내 잡다한 노트

[C++] 백준 1920 수 찾기 본문

백준, 프로그래머스(파이썬)

[C++] 백준 1920 수 찾기

peanutwalnut 2023. 9. 7. 23:36

요새 전공수업에서 c++을 해야해서 c++ 연습할 겸 백준 문제를 풀면서 공부하는 중입니다.

이 문제는 단순한 이분탐색 문제입니다. 그런데 아무리해도 시간초과가 계속 나는거에요 ㅠㅠ

방법을 찾으러 30분동안 웹 서핑을 하던 도중... 답을 찾았습니다.

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool binary_search(vector<int>& n, int temp) {
int low = 0;
int high = int(n.size()) - 1;
int mid;
while (low <= high) {
mid = (low + high) >> 1;
if (temp == n[mid]) {
return true;
}
if (temp > n[mid]) {
low = mid + 1;
}
else{
high = mid - 1;
}

}
return false;
}

int main() {
ios_base::sync_with_stdio(0); cin.tie(NULL);
int n, m;
cin >> n;
vector<int> nvector(n);

for (int i = 0; i < n; i++) {
cin >> nvector[i];
}
sort(nvector.begin(), nvector.end());

cin >> m;
for (int i = 0; i < m; i++) {
int temp;
cin >> temp;
bool ans = binary_search(nvector, temp);
if (ans==true) {
cout << true << "\n"; // endl
}
else {
cout << false << "\n";
}

}
return 0;
}

 

그 이유는 cout << true << endl; 로 제출을 해서 시간초과가 났던 겁니다. 

저걸 "\n" 으로 해야지 시간초과가 안된다고 하더라고요

바꿨더니 바로 성공...

어이가 없어서 진짜 ㅠㅠ

저같은 분 없으시길..