PS/Python

[백준] 1920 - 수 찾기 (파이썬, Python)

w00se 2021. 9. 19. 19:24

https://pixabay.com/ko/photos/우산-햇빛-여자-비-빛-6239364/

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

 

이 문제는 입력으로 저장해야 하는 N개의 숫자와 찾아야 하는 M개의 숫자가 주어지고, 각각의 찾아야 하는 수가 저장한 수 목록에 존재하는지 확인하는 것이 목표입니다.

 

문제를 해는 방법은 다양하게 존재하지만 저는 이분 탐색으로 문제를 해결했습니다.

 

전체 코드

제출 언어: Python3

시간: 600ms

 

import sys

def findNum(target):
    global N, num_list
    res = 0
    left, right = 0, N-1

    while left <= right:
        mid = (left+right) // 2

        if num_list[mid] == target:
            res = 1
            break
        elif num_list[mid] < target:
            left = mid+1
        else:
            right = mid-1

    return res

if __name__ == "__main__":
    N = int(sys.stdin.readline().strip())

    num_list = sorted(map(int, sys.stdin.readline().strip().split()))
    
    M = int(sys.stdin.readline().strip())

    target_list = map(int, sys.stdin.readline().strip().split())
    
    for t in target_list:
        print(findNum(t))

읽어 주셔서 감사합니다 :)

틀린 부분이 있다면 댓글로 편히 알려주세요😊