estherseo
JINIWAY
estherseo
전체 방문자
오늘
어제
  • 분류 전체보기
    • 전공공부
    • CS
      • Network
      • Algorithm
      • 📖
      • python
      • django
    • Pentest
      • 📖
      • HTB
      • Machines
    • Web-hacking
      • 📖
      • Dreamhack
      • Portswigger
    • System-hacking
      • 📖
    • Mobile-hacking
    • Project
    • CVE
    • CTF
    • News & Conference
    • 자격증
    • 신기술
      • AI

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그 소개

인기 글

최근 댓글

최근 글

태그

  • 시스템해킹 스터디
  • ASC스터디
  • asc
  • CVE-2022-22817
  • HTB valentine
  • 패킷잡기
  • 네트워크관리사 실기 합격
  • 중소기업 정보보호
  • shocker
  • 다크웹 모니터링 서비스
  • 세계신안보포럼
  • 기사요약
  • CTF공부
  • 시스템해킹공부
  • 화이트햇투게더
  • ASC 스터디
  • integer overflow
  • 화이트햇투게더1기
  • n00bCTF
  • 셸쇼크
  • 2022 네트워크관리사
  • 스택카나리
  • python eval
  • 2022 pox
  • jwt token last character
  • pox2022
  • 화이트햇투게더1기 결과공유회
  • 다크웹 모니터링
  • Pillow취약점
  • HTB shocker
hELLO · Designed By 정상우.
estherseo

JINIWAY

CS/Algorithm

[Algorithm][이진탐색] 백준 1920 : 수찾기

2024. 6. 29. 22:36
"""
1. 아이디어
- N개의 수 먼저 정렬
- M개를 for문 돌면서, 이진탐색
- 이진탐색 안에서 데이터를 찾으면 1출력, 아니면 0출력

2. 시간복잡도
일반) O(N*M) = 1e5 * 1e5 = 1e10 (100억) >> 2억 초과 !
이진탐색 개선) 
- N개의 입력값 정렬 : O(N*logN)
- M개를 N개 중에서 이진탐색 : O(M*logN)
- 총합 : O((N+M)*logN)=(2e5)*20=4e6 => 가능!

3. 자료구조
- N개 숫자 : int[]
    - 모든 수 범위: -2^31 <= < 2^31 (int로 가능)
- M개 숫자 : int[]
    - 모든 수 범위: -2^31 <= < 2^31 (int로 가능)
"""
""" input
5
4 1 5 2 3
5
1 3 7 9 5
"""
import sys
input = sys.stdin.readline

N = int(input())
arrN = sorted(list(map(int, input().split()))) #이진탐색 가능
M = int(input())
arrM = list(map(int, input().split()))


#search
def search(st, en, target):
    if st == en:
        if arrN[st] == target: 
            return 1
        else: 
            return 0
    mid = (st+en) // 2
    if arrN[mid] < target:
        return search(mid+1, en, target)
    else: 
        return search(st, mid, target)

for i in arrM:
    # 일반 탐색 : if i in arrN:
    print(search(0, N-1, i))

 

 

참고 - https://www.youtube.com/watch?v=D1ad7UCbWHY&list=PLi-xJrVzQaxXC2Aausv_6mlOZZ2g2J6YB&index=7

 

'CS > Algorithm' 카테고리의 다른 글

[Algorithm] 이코테 : 두 배열의 원소 교체  (1) 2024.06.30
[Algorithm] 선택정렬, 삽입정렬, 계수정렬  (0) 2024.06.30
[Algorithm][dfs, bfs] 백준 1260 : dfs와 bfs  (0) 2024.06.28
[Algorithm] 백준 11660 : 구간합 구하기  (0) 2024.06.26
[Algorithm][dfs] 백준-2667  (0) 2024.06.26
    'CS/Algorithm' 카테고리의 다른 글
    • [Algorithm] 이코테 : 두 배열의 원소 교체
    • [Algorithm] 선택정렬, 삽입정렬, 계수정렬
    • [Algorithm][dfs, bfs] 백준 1260 : dfs와 bfs
    • [Algorithm] 백준 11660 : 구간합 구하기
    estherseo
    estherseo
    안녕하세요😀

    티스토리툴바