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

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [๊ตฌํ˜„] 10815๋ฒˆ_์ˆซ์ž ์นด๋“œ

Dbswnstjd 2022. 11. 3. 04:28

๋ฌธ์ œ

https://www.acmicpc.net/problem/10815

 

10815๋ฒˆ: ์ˆซ์ž ์นด๋“œ

์ฒซ์งธ ์ค„์— ์ƒ๊ทผ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ˆซ์ž ์นด๋“œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ˆซ์ž ์นด๋“œ์— ์ ํ˜€์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ˆซ์ž ์นด๋“œ์— ์ ํ˜€์žˆ๋Š” ์ˆ˜๋Š” -10,000,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 10,

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 10815๋ฒˆ ๋ฌธ์ œ - ์ˆซ์ž ์นด๋“œ
import sys
input = sys.stdin.readline
n = int(input())
arr = set(map(int,input().split()))
m = int(input())
m_arr= list(map(int,input().split()))

for i in range(m):
    if m_arr[i] in arr : 
        print(1,end=' ')
    else : print(0,end=' ')

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋งค์šฐ ์‰ฌ์šด ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ž…๋ ฅ๊ฐ’์ด ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ƒ๊ฐํ•ด์•ผ ํ–ˆ๋‹ค.

๋ฆฌ์ŠคํŠธ ํƒ์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)์ด์ง€๋งŒ Set์„ ์‚ฌ์šฉํ•˜๋ฉด O(1) ์ด๋ฏ€๋กœ Set ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค.

๋˜ํ•œ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

# ์ด๋ถ„ํƒ์ƒ‰
import sys

n = int(input())
card = list(map(int, sys.stdin.readline().split()))
m = int(input())
check = list(map(int, sys.stdin.readline().split()))

card.sort()

def binary_search(array, target, start, end):
    while start <= end:
        mid = (start + end) // 2

        if array[mid] == target:
            return mid
        elif array[mid] > target:
            end = mid - 1
        else:
            start = mid + 1
    return None


for i in range(m):
    if binary_search(card, check[i], 0, n - 1) is not None:
        print(1, end=' ')
    else:
        print(0, end=' ')