[BOJ알고리즘, C++]#10815_숫자 카드, 이진 탐색, Binary Search

2022. 9. 6. 00:06· 문제 풀이/BOJ 문제 풀이
목차
  1. [BOJ 알고리즘, C++] #10815_숫자 카드, 이진 탐색, Binary Search

[BOJ 알고리즘, C++] #10815_숫자 카드, 이진 탐색, Binary Search

 

BOJ 알고리즘 문제 풀이, 10815_숫자 카드

이분 탐색을 통해 주어진 숫자 카드가 존재하는지 탐색합니다.

 


 

Overview

 

  1. 문제
  2. 풀이
  3. 코드

 

#1. 문제

 

 

#2. 풀이

 

1. 이진 탐색(Binary Search)

 

Details

 

  1. [정의] : 정렬된 원소 목록을 반으로 나누어 찾고자 하는 원소와 중심이 되는 원소를 비교하고, 작다면 왼쪽으로 크다면 오른쪽으로 중심 원소를 옮겨서 반복적으로 비교 작업을 수행합니다. 시간 복잡도는 O(log  n)으로 선형 탐색보다 뛰어난 성능을 보여줍니다! 다만 몇 가지 단점들이 물론 존재합니다!
  2. [특징] : 정렬 상태의 자료구조에서만 가능합니다. 그리고, 연결 리스트에서 사용이 힘듭니다.

 

#3. 코드
/*
    설명:
        Binary Search를 사용합니다.
    풀이:
        1. 먼저 숫자 카드를 오름 차순(less) 정렬 합니다.
        2. left = 0, right = N-1, mid = (left + right)/2
        3. 정수를 mid와 비교하고, mid보다 작다면 right = mid-1 로 변경, mid보다 크다면 left = mid+1로 설정
        4. 퀵 정렬하고 비슷하지만, 정확하게는 Pivot을 정하며 잘게 잘게 분할 하는 과정을 통해 마지막에 다다르면 정답을 찾는 풀이입니다.
*/

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

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

    int N, M;
    vector<int> nVector; vector<int> mVector;

    cin >> N;
    for(int i=0; i<N; i++)
    {
        int tmp;
        cin >> tmp;

        nVector.push_back(tmp);
    }

    cin >> M;
    for(int i=0; i<M; i++)
    {
        int tmp2;
        cin >> tmp2;

        mVector.push_back(tmp2);
    }

    sort(begin(nVector), end(nVector));

    for(int i=0; i<M; i++)
    {
        int right = N-1;
        int left = 0;
        bool check = false;
        while(left <= right)
        {
            int mid = (left + right)/2;
            if (mVector[i] == nVector[mid])
                check = true;
            if (mVector[i] < nVector[mid])
                right = mid-1;
            else
                left = mid+1;
        }

        if(check == true)
            cout << 1 << " ";
        else
            cout << 0 << " ";
    }
}

 

 

 

'문제 풀이 > BOJ 문제 풀이' 카테고리의 다른 글

[BOJ알고리즘, C++]#15649_N과 M(1), 깊이 우선 탐색  (0) 2022.10.23
[BOJ알고리즘, C++]#10816_숫자 카드2, lower_bound, upper_bound  (0) 2022.09.25
[BOJ알고리즘, C++]#1008_A/B, C++ 부동 소수점, precision(), fixed  (0) 2022.09.04
[BOJ알고리즘, C++]#25305_커트 라인, 정렬 알고리즘, STL, 내림차순  (0) 2022.09.04
[BOJ알고리즘, C++]#11050_이항 계수 1, 이항 계수 공식, 재귀문 활용  (0) 2022.09.04
  1. [BOJ 알고리즘, C++] #10815_숫자 카드, 이진 탐색, Binary Search
'문제 풀이/BOJ 문제 풀이' 카테고리의 다른 글
  • [BOJ알고리즘, C++]#15649_N과 M(1), 깊이 우선 탐색
  • [BOJ알고리즘, C++]#10816_숫자 카드2, lower_bound, upper_bound
  • [BOJ알고리즘, C++]#1008_A/B, C++ 부동 소수점, precision(), fixed
  • [BOJ알고리즘, C++]#25305_커트 라인, 정렬 알고리즘, STL, 내림차순
Hardii2
Hardii2
Hardii2
개발 블로그
Hardii2
전체
오늘
어제
  • 분류 전체보기
    • 알고리즘
    • 웹 개발
      • Node.js
      • React
    • 게임개발
      • DirectX12
      • 관련 지식
      • Unreal C++
      • Unreal 블루프린트
    • 언어
      • Effective C++
      • Basic C++
      • 디자인 패턴
      • 자료구조
      • 기술 질문
    • 문제 풀이
      • BOJ 문제 풀이
      • Programmers 문제 풀이
      • geeksForgeeks 문제 풀이
    • 수학
      • 확률과 통계
      • 게임수학
    • 개인프로젝트
    • 그룹프로젝트
      • PM
      • Dev
    • Github

블로그 메뉴

  • 홈
  • 글쓰기

공지사항

인기 글

태그

  • 디자인 패턴
  • stl
  • 우선순위 큐
  • unreal
  • 정렬
  • 알고리즘
  • programmers
  • 그래프
  • dfs
  • set
  • BFS
  • 개발
  • Effective C++
  • C++
  • 트리
  • 기술 질문
  • BOJ
  • Unreal Blueprint
  • DP
  • 최단 경로

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Hardii2
[BOJ알고리즘, C++]#10815_숫자 카드, 이진 탐색, Binary Search
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.