문제
숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.
예시 입력
더보기
5
6 3 2 10 -10
8
10 9 -5 2 3 4 5 -10
6 3 2 10 -10
8
10 9 -5 2 3 4 5 -10
예시 출력
더보기
1 0 0 1 1 0 0 1
아이디어
이진탐색
알고리즘
이진 탐색 STL를 사용해 구현시간을 줄이자
소스코드
//소스코드
#include <bits/stdc++.h>
using namespace std;
int N, M;
vector<int> Narr, Marr;
int main() {
int temp;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> temp;
Narr.push_back(temp);
}
sort(Narr.begin(), Narr.end());
cin >> M;
for (int i = 0; i < M; i++) {
cin >> temp;
Marr.push_back(temp);
}
for (int i = 0; i < M; i++) {
if (binary_search(Narr.begin(), Narr.end(), Marr[i])) {
cout << "1 ";
}
else {
cout << "0 ";
}
}
}
알아 가야할것
- sort와 이진탐색 사용방법
'알고리즘, 코테 준비' 카테고리의 다른 글
백준 10971번 - 외판원 순회2 (0) | 2022.11.10 |
---|---|
백준 20291번 - 파일정리 (0) | 2022.11.06 |
백준 6550번 - 부분 문자열 (0) | 2022.11.06 |
백준 1260번 - DFS와 BFS (0) | 2022.11.06 |
백준 1717번 - 집합의 표현 (0) | 2022.11.06 |