B10815

개요

백준 문제 10815번을 풀면서 어려웠던 점과 코드를 정리한다.
소요 시간 : 30분
https://www.acmicpc.net/problem/10815

문제

숫자 카드는 정수 하나가 적혀져 있는 카드이다.
상근이는 숫자 카드 N개를 가지고 있다.
정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> num;
void binSearch(int N)
{
int i,j;
int M = 0;
int mid = 0;
int obj;
int searched = 0;
cin >> M;
for(int k=0;k<M;k++)
{
cin >> obj;
if(k != 0)
{
cout << " ";
}
i = 0;
j = N-1;
searched = false;
while(i <= j)
{
mid = (i + j)/2;
if(obj == num[mid])
{
searched = 1;
break;
}
else if(obj > num[mid])
{
i = mid+1;
}
else
{
j = mid-1;
}
}
cout << searched;
}

}
void solve()
{
int obj;
int val = 0;
int N;

cin >> N;
for(int i=0;i<N;i++)
{
cin >> val;
num.push_back(val);
}
sort(num.begin(),num.end());
binSearch(N);

}

int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
solve();
}

풀이

탐색 -> 빠른 탐색 알고리즘인 이진 탐색 사용
이진 탐색 사용할려면 정렬해야함 -> 이번에는 sort() 사용

배울 점, 메모

1
2
ios_base::sync_with_stdio(0);
cin.tie(0);

위 코드 안써서 시간초과남
부담갖지말고 매일매일 하루를 채운다는 느낌

Author

Praisebak

Posted on

2021-04-30

Updated on

2021-04-30

Licensed under

Comments