cafemug   6년 전

밑에꺼 댓글까지 다 고쳐봐서 한건데

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

for i in range(m):
    k=0
    mini=0
    maxn=n-1
    while(mini<=maxn):
        
        mid=(mini+maxn)//2
        if b[i]==a[mid]:
            print(1)
            k+=1
            break
            
            
        elif b[i]<a[mid]:
            maxn=mid-1
        else:
            mini=mid+1
            
        
    if k==0:
        print(0)
            
       
            
        


jh05013   6년 전

반례를 찾아보실 노력을 하셨나요...

cafemug   6년 전

@jh05013

그렇게 보였을지 몰라도 지금 저문제만 10시간 잡고 있는데요

아니 분명 알고리즘적으론 맞는데 왜저러는지 이해를 못하겠네요

어디를 수정해야하는지 알려주실수잇나요?

jh05013   6년 전

5번과 6번 줄을 바꿔야 되네요. 스트링을 비교할 때는 길이가 우선순위가 아니고 맨 앞글자부터 차례대로 비교하기 때문에 "10"이 "8"보다 앞에 오게 됩니다.

cafemug   6년 전

@jh05013

엉뚱한데에서 찾아보고 있엇군요 ㅠㅠ

감사합니다

댓글을 작성하려면 로그인해야 합니다.