๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿƒ algorithm/boj

BOJ 1920 - ์ˆ˜ ์ฐพ๊ธฐ

by HandHand 2021. 7. 5.

๋ฌธ์ œ

๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1920๋ฒˆ

ํ’€์ด ๊ณผ์ •

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ํŠน์ • ์ˆ˜๋“ค์ด ์กด์žฌํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ์ฐพ๋Š” ์ˆ˜๋“ค์ด ๊ฐ๊ฐ ์ตœ๋Œ€ 10๋งŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๊ฒ€์ƒ‰์šฉ ๋ฐฐ์—ด์„ ๋ฏธ๋ฆฌ ์ •๋ ฌํ•œ ๋’ค์— ์ด๋ถ„ ํƒ์ƒ‰ ์„ ์ด์šฉํ•ด์„œ O(MlogN) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ


import sys


def find(arr, target):
    lo, hi = 0, len(arr) - 1

    while lo <= hi:
        mid = (lo + hi) // 2

        if arr[mid] == target:
            return True
        elif arr[mid] < target:
            lo = mid + 1
        else:
            hi = mid - 1

    return False


def solution(number):
    return '1' if find(A, number) else '0'


if __name__ == '__main__':
    N = int(input())
    A = list(map(int, sys.stdin.readline().split()))
    M = int(input())
    questions = list(map(int, sys.stdin.readline().split()))

    A.sort()

    for question in questions:
        answer = solution(question)
        sys.stdout.write(f"{answer}\n")

๋ฐ˜์‘ํ˜•

'๐Ÿƒ algorithm > boj' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ 9094 - ์ˆ˜ํ•™์  ํ˜ธ๊ธฐ์‹ฌ  (0) 2021.09.12
BOJ 5076 - Web Pages  (0) 2021.07.19
BOJ 13700 - ์™„์ „ ๋ฒ”์ฃ„  (0) 2021.06.29
BOJ 14950 - ์ •๋ณต์ž  (0) 2021.06.25
BOJ 1197 - ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ  (0) 2021.06.18

๐Ÿ’ฌ ๋Œ“๊ธ€