본문 바로가기
ALGORITHM/BAEKJOON

[BOJ/Python] 1920. 수 찾기

by 안녕나는현서 2021. 8. 21.
728x90

📌 문제

https://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

 

📌 문제 접근 방법

  1. 이진 탐색 적용해보기!
    start랑 end범위 잡아주는 게 은근 헷갈린다..! 완전히 이해될 때까지 주말동안 문제 많이 풀어보기!!!!

 

📌 코드

import sys

def isin(A, B):
    A.sort()

    result = [0]*M

    for i in range(M):
        start = 0
        end = N-1

        while start <= end:
            center = (start + end)//2
            
            if B[i] < A[center]:
                end = center-1
            elif B[i] > A[center]:
                start = center+1
            else:
                result[i] += 1
                break
    
    return result


N = int(sys.stdin.readline())
A = list(map(int, sys.stdin.readline().split()))

M = int(sys.stdin.readline())
B = list(map(int, sys.stdin.readline().split()))

result = isin(A, B)

for num in result:
    print(num)

 

728x90

댓글