Bepoz
파즈의 공부 일기
Bepoz
전체 방문자
오늘
어제
  • 분류 전체보기 (232)
    • 공부 기록들 (85)
      • 우테코 (17)
    • Spring (85)
    • Java (43)
    • Infra (17)
    • 책 정리 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Bepoz

파즈의 공부 일기

공부 기록들

19.11.25 (이분탐색에서 조건문은 항상!, boj1920 ,boj10816)

2019. 11. 25. 23:55

이분탐색에서 조건문은 항상 

lefT<=right 으로 해두자 right이 left보다 작아지는 경우가 존재하기 때문이다. 

 

#include 
#include 
#include 
using namespace std;

vector arr;
vector arr2;
//int arr[100000] = { 0 };
//int arr2[100000] = { 0 };

int binary_search(int x,int n) {
int left=0, right=n-1, pivot=(left+right)/2;
while (left <= right) {
if (x == arr[pivot]) return 1;
if (arr[pivot] > x) {
right = pivot - 1;
pivot = (left + right) / 2;
}
else if (arr[pivot] < x) {
left = pivot + 1;
pivot = (left + right) / 2;
}
}
return 0;
}

int main() {
int n,m,num;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d",&num);
arr.push_back(num);
}
scanf("%d", &m);
for (int i = 1; i <= m; i++) {
scanf("%d", &num);
arr2.push_back(num);
}
sort(arr.begin(),arr.end());
for (int i = 0; i < m; i++) {
printf("%d\n", binary_search(arr2[i],n));
}
return 0;
}

 

boj1920 이다. 

 

 

 

 

어떤 수의 등장 횟수는 map을 이용하여 쉽게 해결할 수 있다. 

 

#include <cstdio>

#include <algorithm>

#include <map>

using namespace std;

map<int, int> mp;

int n, m, x;

int main() {

    scanf("%d", &n);

    for (int i = 0; i < n; i++) {

        scanf("%d", &x);

        mp[x]++;

    }

    scanf("%d", &m);

    for (int i = 0; i < m; i++) {

        scanf("%d", &x);

        printf("%d ", mp[x]);

    }

    return 0;

}


boj10816 이다. 시간초과 나왔다...

 

지난번에 배운 lower_bound와 upper_bound를 사용한다. (까먹어서 찾아봄.. ㅎㅎ; )

이 둘은 binary_search를 이용하기 때문에 이분탐색 쪽 파트에 들어가 있는 것 같다. 

 

 

'공부 기록들' 카테고리의 다른 글

19.12.05 (힙, c++ 절대값, mem 시리즈, boj11286, boj1655)  (0) 2019.12.05
19.12.03 (boj1620, isdigit)  (0) 2019.12.03
19.11.22 (vector 2차 배열 선언, lower bound, upper bound)  (0) 2019.11.22
19.11.13 (priority queue, deque)  (0) 2019.11.13
19.11.05 (근황 토크, 팩토리 패턴)  (0) 2019.11.05
    '공부 기록들' 카테고리의 다른 글
    • 19.12.05 (힙, c++ 절대값, mem 시리즈, boj11286, boj1655)
    • 19.12.03 (boj1620, isdigit)
    • 19.11.22 (vector 2차 배열 선언, lower bound, upper bound)
    • 19.11.13 (priority queue, deque)
    Bepoz
    Bepoz
    https://github.com/Be-poz/TIL

    티스토리툴바