STUDY/Algorithm

[백준] 1920 수찾기 python

sinawi95 2021. 4. 28. 21:39
728x90

www.acmicpc.net/problem/1920

 

1920번: 수 찾기

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

www.acmicpc.net

import sys
input = sys.stdin.readline

N = int(input())
N_list = list(map(int, input().split()))
N_list.sort()
M = int(input())
M_list = list(map(int, input().split()))
# M_list의 원소가 N_list에 존재하는지 알아내는 문제

def binarySearch(s, e, key):
    while s <= e:
        m = (s + e) // 2
        if N_list[m] == key:
            return 1
        elif N_list[m] < key:
            s = m + 1
        else: # N_list[m] > key
            e = m - 1
    return 0

for i in range(len(M_list)):
    print(binarySearch(0, N - 1, M_list[i]))

M_list의 원소가 N_list에 존재하는지 알아내는 문제이다

이분탐색을 활용해서 풀면되는데 N_list가 정렬이 되어있지 않다.

 

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

[백준] 2644 촌수계산 python  (0) 2021.04.29
[백준] 1107 리모컨 python  (0) 2021.04.28
[백준] 1874 스택수열 python  (0) 2021.04.28
[백준] 1654 랜선자르기 python  (0) 2021.04.28
[백준] 1504 특정한 최단 경로 python  (0) 2021.04.27