본문 바로가기
알고리즘/BOJ

[BOJ / 백준] 10815번 숫자 카드 python / 파이썬 이진탐색

by seohmoon 2022. 3. 25.


설계 

1. 상근이의 카드를 오름차순으로 정렬해주고

2. 찾아야 할 배열을 돌면서 이진탐색으로 찾아준다.

 

이진 탐색 과정

N = int(input())
sg = list(map(int, input().split()))
M = int(input())
mrr = list(map(int, input().split()))
sg.sort()   # 상근이의 숫자카드 오름차순 정렬

for i in mrr:
    s = 0     # start
    e = N-1   # end
    ans = 0   # 없다고 가정하고 시작
    while s <= e:   # 시작점이 끝점보다 커지면 반복문 종료
        mid = (s+e)//2   # 중간값은 반복문이 돌 때마다 새롭게 설정해줘야함
        if i > sg[mid]:
            s = mid + 1
        elif i < sg[mid]:
            e = mid - 1
        elif i == sg[mid]:   # 같으면 ans를 1로 바꿔주고 반복문 종료
            ans = 1
            break
    print(ans, end=" ")

그럼 이제 숫자 카드 2 풀러 가봐야지...

댓글