[백준] 1920 수 찾기와 Python 이진탐색(Binary Search)

2021. 12. 25. 23:07·Algorithm/백준

#1920 수찾기

1. 시간초과 코드(매우매우 직관적인 코드)

import sys
input = sys.stdin.readline()

n = int(input)
a = list(map(int,input.split()))
m = int(input)
x = list(map(int, input.split()))

for i in range (n):
  if m_arr[i] in n_arr:
    print(1)
  else:
    print(0)

2. 이진탐색 이용(576ms)

import sys

def BinarySearch(a,x):
    start = 0
    end = len(a)-1
    while start<=end:
        mid = (start+end)//2
        if x==a[mid]:
            return 1
        elif x>a[mid]:
            start = mid+1
        else:
            end = mid-1
    return 0

n = int(input())
a = list(map(int,sys.stdin.readline().split()))
a.sort()

m = int(input())
x = list(map(int, sys.stdin.readline().split()))

for i in range (m):
    print(BinarySearch(a,x[i]))

3. 이진탐색 정리할 겸 공부!

 

이진탐색은 큰 배열의 탐색에서는 적합하지 않다. (길이가 길어질수록 시간이 오래걸린다)

정렬된 배열의 중앙값을 기준으로 찾고자 하는 항목이 왼쪽에 있는지 오른쪽에 있는지 판단 후 탐색 범위를 반으로 줄인다.

 

1) a 배열을 정렬한다.

2) start와 end지점을 정해놓고 mid=(start+end )//2를 사용해 중간 지점을 정한다.

3) x[i]값을 a[mid]와 비교하여 일치하면 1을 반환하고 while문 종료,

    x[i] < a[min]라면 왼쪽을 탐색하도록, x[i]>a[mid]라면 오른쪽을 탐색하도록 범위를 좁혀준다. 

4) 위의 단계를 거친 후 x[i]가 a에 존재하지 않으면 0을 return하고 종료

 

크리스마스는 Kermit과 함께 git commit...🤶🏻

 

눈물나는거 아님...

반응형
'Algorithm/백준' 카테고리의 다른 글
  • [백준] 2108 통계학 Python Counter모듈
  • [사소한 궁금증3] python math.comb와 factorial 함수
  • [사소한 궁금증2] Python에서 list(map())과 map()의 차이
  • [사소한 궁금증1] Python에서 input()과 sys.stdin.readline()의 차이
수영하는 두루미
수영하는 두루미
한국체육대학교에서 스포츠 AI빅데이터를 공부하고 있습니다. B.S. Computer Science
  • 수영하는 두루미
    두루미의 스포츠 데이터분석실
    수영하는 두루미
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • 스포츠 AI·빅데이터(2024~) (21)
        • 2024-2 (0)
        • 빅데이터기반 스포츠경기분석 (10)
        • 스포츠와 소셜텍스트분석 (4)
        • 영상기반 데이터 수집기법 (3)
        • 2025-1 (0)
        • 스포츠와 AI 모델링 기초 (0)
        • 스포츠와 프로그램 코딩(Python) (0)
        • 운동역학 (0)
        • 2025-2 (0)
        • 스포츠 AI빅데이터 연구 세미나 (1)
        • 스포츠 딥러닝 (0)
        • 운동생리학 (0)
        • etc. (0)
      • Data (13)
        • ADsP (1)
        • SQLD (1)
        • 빅데이터분석기사 (4)
        • ADP(데이터분석 전문가) (5)
        • 키다리아저씨(2021.12.05~) (2)
        • 파이썬 자격과정(2021.07.22-23) (0)
      • 정보처리기사 (1)
      • CSTS (10)
      • 블록체인과 암호화폐 (0)
        • 블록체인 (0)
      • Algorithm (44)
        • 백준 (42)
        • 자료구조 (2)
      • CSOS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    명세기반테스트
    C언어
    heapsort
    데이터분석
    스포츠데이터
    Python
    csts
    구조기반테스트
    스포츠ai빅데이터
    빅데이터분석기사
    스포츠데이터분석
    한체대대학원
    스포츠빅데이터
    한체대
    백준
    자료구조
    알고리즘
    정적테스트
    경험기반테스트
    동적테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수영하는 두루미
[백준] 1920 수 찾기와 Python 이진탐색(Binary Search)
상단으로

티스토리툴바