D.S.
Übermensch : To a Brighter Future
D.S.
전체 방문자
오늘
어제
  • 분류 전체보기 (109)
    • Lecture Notes (1)
      • CS231n (1)
    • Thoughts on Videos (ToV) (7)
    • Tech (0)
    • 개인 기록 (0)
      • 프로그래밍공부일지 (0)
      • CS Study 한눈에 보기 (0)
    • 프로그래밍 (65)
      • C (35)
      • C++ (0)
      • Python (12)
      • 이코테python (8)
      • 2022군장병AI_SW_Elice (4)
      • 2022군장병AI_SW_Kakao (1)
      • Solidity (2)
      • Web (3)
    • Mental Augmentation (28)
      • Kwik Reading (22)
      • 독서 (0)
      • 갸꿀팁 (2)
      • 3-Part Memory Training (1)
      • Kwik Recall (3)
    • Physical Augmentation (3)
      • Health Journal (2)
      • Sinclair Podcast (1)
    • Others (0)
      • 여행 (0)
    • Idea Bank (0)
      • VBA (0)
      • PLANS (0)
    • 22-2학기 수업 (0)
      • 데이터베이스시스템 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

글쓰기

Kwik Reading

공지사항

인기 글

태그

  • lifespan
  • 뇌 요가
  • Eye Fixation
  • 기술독서
  • elice
  • 속독
  • 습관
  • Jim Kwik
  • 번역
  • 비문학독해
  • kwik recall
  • 독서
  • 속독 훈련
  • Kwik Brain
  • Infinity Technique
  • ai/sw
  • brain yoga
  • 학습
  • subvocalization
  • 노화의 종말
  • 군장병
  • 속발음
  • 백준
  • brain break
  • 디지털 방해
  • Kwik Reading
  • baekjoon
  • Dandapani
  • 우뇌
  • 짐 퀵

최근 댓글

hELLO · Designed By 정상우.
D.S.

Übermensch : To a Brighter Future

프로그래밍/C

baekjoon 1920 w/ binary search & merge sort

2022. 1. 11. 23:33

#include<stdio.h>

void merge(int* A, int N, int low, int mid, int high){
    int order[N];
    int i = low;
    int j = mid + 1;
    int k = low;
    
    while(i<=mid && j<=high){
        if(A[i] < A[j])
            order[k++] = A[i++];
        else
            order[k++] = A[j++];
    }
    
    if(i<=mid)
        while(i<=mid)
            order[k++] = A[i++];
    if(j<=high)
        while(j<=high)
            order[k++] = A[j++];
    for(int i=low; i<=high; i++)
        A[i] = order[i];
}

void mergeSort(int* A, int N, int low, int high){
    if(low<high){
        int mid = (low + high) / 2;
        mergeSort(A, N, low, mid);
        mergeSort(A, N, mid+1, high);
        merge(A, N, low, mid, high);
    }
}

int binarySearch(int *A, int low, int high, int num){
    int mid = (low + high) / 2;
    if(low == high){
        if(A[mid]==num)
            return 1;
        else
            return 0;
    }
    if(num > A[mid])
        return binarySearch(A, mid+1, high, num);
    else if(num < A[mid])
        return binarySearch(A, low, mid, num);
    else
        return 1;
}


int main(){
    int N,M;
    int tmp;
    scanf("%d", &N);
    int A[N];
    int order[N];
    for(int i=0;i<N;i++)
        scanf("%d", &A[i]);
    mergeSort(A, N, 0,N-1);
   
    scanf("%d", &M);
    int B[M];
    for(int i=0;i<M;i++){
        scanf("%d", &tmp);
        if(binarySearch(A, 0, N-1, tmp))
            B[i] = 1;
        else
            B[i] = 0;
    }
    
    for(int i=0;i<M;i++)
        printf("%d\n", B[i]);
        
    return 0;
}

'프로그래밍 > C' 카테고리의 다른 글

baekjoon 2108 & float와 double형의 차이  (0) 2022.01.12
baekjoon 1874 & runtime error: integer overflow  (0) 2022.01.12
baekjoon 2751 w/ merge sort  (0) 2022.01.11
baekjoon 1654 w/ binary search  (0) 2022.01.10
baekjoon 1436 w/ brute force  (0) 2022.01.10
    '프로그래밍/C' 카테고리의 다른 글
    • baekjoon 2108 & float와 double형의 차이
    • baekjoon 1874 & runtime error: integer overflow
    • baekjoon 2751 w/ merge sort
    • baekjoon 1654 w/ binary search
    D.S.
    D.S.

    티스토리툴바