[1920번] 수 찾기 (이진탐색)

2023. 3. 11. 11:55·Coding Test/Search
728x90
 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

 

 

# 자연수 N(1~100,000)
n = int(input())
# A[] N개의 정수
a = list(map(int, input().split()))
# 자연수 M(1~100,000)
m = int(input())
# M개의 수
list = list(map(int, input().split()))

a.sort()

for i in range(m):
    find = False
    target = list[i]

    start = 0
    end = len(a) - 1

    while start <= end:
        mid = int((start + end) / 2)
        midVal = a[mid]

        if midVal > target:
            end = mid - 1
        elif midVal < target:
            start = mid + 1
        else:
            find = True
            break

    if find:
        print(1)
    else:
        print(0)
 


bisect_left 함수는 배열 안에 찾으려는 값이 있으면 그 위치 없으면 배열 길이를 반환하는 함수가 아님
bisect_left(Nlist, m)은 Nlist.insert(i, m)을 했을 때 Nlist가 정렬된 상태를 유지하는 인덱스 i를 반환하는 함수
따라서 bisect_left는 찾고자 하는 값이 배열에 없는데도 len(Nlist)가 아닌 값을 반환할 수 있음

# 이진탐색
from bisect import bisect_left, bisect_right

'''
정수범위 -2^31 ~ 2^31
M개의 수가 A안에 존재하는지
5
4 1 5 2 3
5
1 3 7 9 5
'''

# 자연수 N(1~100,000)
n = int(input())
# A[] N개의 정수
a = list(map(int, input().split()))
# 자연수 M(1~100,000)
m = int(input())
# M개의 수
list = list(map(int, input().split()))

a.sort()
for i in list:

    # 이진탐색
    idx = bisect_left(a, i)
    print("i:", i, " idx: ", idx, " len(list): ", list[idx-1])

    # if idx > len(list)-1:
    #     print(0)
    # else:
    #     print(1)

 

 

 

 

728x90
'Coding Test/Search' 카테고리의 다른 글
  • 합이 같은 부분집합(DFS)
  • 부분집합 구하기(DFS)
  • [10829] 이진수 변환(DFS)
  • [1260번] DFS, BFS
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    플로이드워셜
    조합
    프로그래머스
    그래프
    자료구조
    파이썬
    동적계획법
    DP
    덱
    DFS
    큐
    LIS
    정렬
    알고리즘
    BFS
    최소신장트리
    트리
    힙
    다익스트라
    구간합
    최대공약수
    스택
    월간코드챌린지
    재귀
    그리디
    이분탐색
    백준
    최단거리
    Algorithm
    구현
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
[1920번] 수 찾기 (이진탐색)
상단으로

티스토리툴바