반응형

● 문제 출처 Site

 

1920번: 수 찾기

첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.

www.acmicpc.net

[코드]

def Count(num):
    lt = 0
    rt = len(a)-1
    cnt = 0
    while lt <= rt:
        mid = (lt+rt)//2
        if num == a[mid]:
            cnt = 1
            return cnt
        elif num < a[mid]:
            rt = mid - 1
        else:
            lt = mid + 1
    return cnt


n = int(input())
a = list(map(int, input().split()))

m = int(input())
b = list(map(int, input().split()))
a.sort()
for x in b:
    if Count(x) > 0:
        print('1')
    else:
        print('0')

[느낀 점]

애초에 문제 분류를 이분 탐색 으로 설정해서 풀었기 때문에, 생각하는데는 많이 어렵진 않았다. 하지만 정확하게 문제를 이해하는게 좀 힘들었다. 아직 문제에 대한 이해력이 많이 부족한것 같다. 그리고 과연 이 문제가 이분 탐색이라고 안나왔다면 내가 풀 수 있었을까...? 라는 의구심도 든다. 

 

또한, 코드를 옮겨서 리뷰를 해보니 변수 선언에 좀 더 신중해야 겠다는 생각이 든다.

반응형

+ Recent posts