문제설명
소스코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); //표준 스트림 동기화 해제
cin.tie(nullptr); //입출력 연결 끊기
int N, M;
vector<int> vec;
cin >> N;
for (int i = 0; i < N; ++i)
{
int input;
cin >> input;
vec.push_back(input);
}
sort(vec.begin(), vec.end());
cin >> M;
for (int i = 0; i < M; ++i)
{
int input;
cin >> input;
cout << binary_search(vec.begin(), vec.end(), input) << ' ';
}
}
설명
- 이중 for문을 사용하면 시간초과가 된다.
- 이진 탐색으로 탐색하기 위해 algorithm 라이브러리의 sort() 함수로 정렬을 해준다.
- algorithm 라이브러리의 binary_search() 함수로 정렬된 벡터에서 입력받은 값이 있는지 확인한다.
- 표준 스트림 동기화 해제, 입출력 연결 끊기, endl 대신 '\n'사용 -> 시간초과 방지
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 14단계 - 10816번 문제 (숫자 카드 2) (0) | 2023.07.22 |
---|---|
[C++] 백준 14단계 - 14425번 문제 (문자열 집합) (0) | 2023.07.21 |
[C++] 백준 13단계 - 1181번 문제 (단어 정렬) (0) | 2023.07.20 |
[C++] 백준 13단계 - 18870번 문제 (좌표 압축) (0) | 2023.07.19 |
[C++] 백준 13단계 - 11651번 문제 (좌표 정렬하기 2) (0) | 2023.07.19 |