하루일문

[백준] 2776번 암기왕(python) 본문

algorithm/baekjoon

[백준] 2776번 암기왕(python)

support_u 2023. 4. 20. 20:04

문제

 

2776번: 암기왕

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,

www.acmicpc.net

코드

for t in range(int(input())):
    # 오늘 본 숫자를 입력받고 이진탐색으로 풀기 위해 오름차순 정렬해준다
    see_n = int(input())
    see = sorted(list(map(int, input().split())))
    write_n = int(input())
    write = list(map(int, input().split()))
    
    # 적은 숫자만큼 반복한다
    for n in write:
        # 시작과 끝을 정해준다
        start, end = 0, see_n-1
        while True:
            mid = (start + end) // 2
            # 같은 숫자가 나오면 1
            if see[mid] == n:
                print(1)
                break
            # 아님 0
            if start >= end:
                print(0)
                breaㅏ
            # 적어논 숫자가 본 숫자보다 크면 start를 조정
            if see[mid] < n:
                start = mid + 1
            else:
                end = mid - 1

해설

이진 탐색으로 비교군을 한정해나가면서 풀었다. 그러다 같은 답이 나오면 1, 아무리 돌아도 답이 안나오면 0을 출력하게 했다.