๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

[๋ฐฑ์ค€] [Python] 1920๋ฒˆ_์ˆ˜ ์ฐพ๊ธฐ

Dbswnstjd 2022. 3. 19. 19:51

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

ํ’€์ด

# ๋ฐฑ์ค€ 1920๋ฒˆ ๋ฌธ์ œ - ์ˆ˜ ์ฐพ๊ธฐ
def binary_search(element, some_list, start = 0, end=None):
    if end == None:
        end = len(some_list) - 1
    
    if start > end:
        return 0
    
    mid = (start + end) // 2
    if element == some_list[mid]:
        return 1
    elif element < some_list[mid]:
        end = mid - 1
    elif element > some_list[mid]:
        start = mid + 1
    return binary_search(element, some_list, start, end)

n = int(input())
n_list = list(map(int, input().split(' ')))
n_list.sort()

m = int(input())
m_list = list(map(int, input().split(' ')))

for i in range(len(m_list)):
    print(binary_search(m_list[i], n_list))

์ด์ง„ ํƒ์ƒ‰์„ ํ†ตํ•ด ๋ฌธ์ œ ํ•ด๊ฒฐ

 

n ์˜ ๋ฒ”์œ„๊ฐ€ 100,000 ์ด๊ธฐ ๋•Œ๋ฌธ์— in ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ฒŒ ๋œ๋‹ค.