1920번 - 수 찾기
밑에꺼 댓글까지 다 고쳐봐서 한건데
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
그렇게 보였을지 몰라도 지금 저문제만 10시간 잡고 있는데요
아니 분명 알고리즘적으론 맞는데 왜저러는지 이해를 못하겠네요
어디를 수정해야하는지 알려주실수잇나요?
5번과 6번 줄을 바꿔야 되네요. 스트링을 비교할 때는 길이가 우선순위가 아니고 맨 앞글자부터 차례대로 비교하기 때문에 "10"이 "8"보다 앞에 오게 됩니다.
엉뚱한데에서 찾아보고 있엇군요 ㅠㅠ
감사합니다
댓글을 작성하려면 로그인해야 합니다.
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)