Baekjoon

Baekjoon 1920번 수 찾기

ppwag 2020. 7. 23. 22:55

문제

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

걸린 시간

01 : 27 : 31

풀이

Python3

import sys
input = sys.stdin.readline

if __name__ == "__main__":
    N = int(input())    

    A = [int(i) for i in input().split()]

    M = int(input())

    X = [int(i) for i in input().split()]

    A.sort()
    for i in X:
        left = 0
        right = len(A)-1
        while left <= right:
            mid = (right + left) // 2

            # 찾으려고 하는 값이 mid 보다 큰가?
            if i == A[mid]:
                result = A[mid]
                break
            elif i > A[mid]:
                result = A[mid]
                left = mid + 1    
            else:
                result = A[mid]
                right = mid - 1

        if result == i:
            print('1')
        else:
            print('0')

이분탐색을 이용한 문제인 줄 알고 있었지만 구현이 미흡해 시간이 오래 걸렸다. 구현이 익숙치 않으면 작은 예제로 직접 풀이과정을 그려보는것이 좋을 것 같다.

문제유형 분석과 풀이를 보지않고 해결했음에 의미를 두는 문제.

댓글