본문 바로가기

문제풀기이야기

10815번_숫자카드_BOJ

문제 링크

10815번 숫자카드 : https://www.acmicpc.net/problem/10815




문제 설명 및 해결 아이디어

Binary Search문제이다. 해당 숫자가 숫자카드에 있으면 1을 출력하고, 없으면 0을 출력하면 된다.




코드

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
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
 
int n, m, num;
vector<int> numCard;
int findfunc(int x) {
    int left = 0, right = n;
    while (left <= right) {
        int mid = (left + right) / 2;
 
        if (x == numCard[mid])
            return 1;
        else if (x > numCard[mid]) {
            left = mid + 1;
        }
        else if (x < numCard[mid]) {
            right = mid - 1;
        }
    }
    return 0;
}
int main() {
    scanf("%d"&n);
    for (int i = 0; i < n; ++i) {
        scanf("%d"&num);
        numCard.push_back(num);
    }
    sort(numCard.begin(), numCard.end());
    scanf("%d"&m);
    for (int i = 0; i < m; ++i) {
        scanf("%d"&num);
        printf("%d\n", findfunc(num));
    }
    return 0;
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
 
int n, m, num;
vector<int> numCard;
int main() {
    scanf("%d"&n);
    for (int i = 0; i < n; ++i) {
        scanf("%d"&num);
        numCard.push_back(num);
    }
    sort(numCard.begin(), numCard.end());
 
    scanf("%d"&m);
    for (int i = 0; i < m; ++i) {
        scanf("%d"&num);
        printf("%d ", binary_search(numCard.begin(), numCard.end(), num));
    }
 
    return 0;
}
cs


'문제풀기이야기' 카테고리의 다른 글

3273번_두 수의 합_BOJ  (0) 2018.07.17
7795번_먹을 것인가 먹힐 것인가_BOJ  (0) 2018.07.17
2110번_공유기 설치_BOJ  (0) 2018.07.16
1300번_K번째 수_BOJ  (0) 2018.07.16
2512번_예산_BOJ  (0) 2018.07.16