문제

n개로 이루어진 정수 집합에서 k보다 큰 수가 처음으로 등장하는 위치를 찾으세요.

단, 입력되는 정수 집합은 오름차순으로 정렬되어 있습니다.

입력

첫째 줄에 정수 집합의 크기 n이 주어진다. 단, n은 1,000,000이하의 양의 정수이다.
두번째 줄에는 정수 집합에 속한 int범위 이내의 양의 정수가 n개 주어진다.
셋째 줄에는 찾고자 하는 값 k가 주어진다.

출력

찾고자 하는 원소의 위치를 출력한다.
만약 집합 내 모든 원소가 k보다 작다면 n+1을 출력한다.

예제 1 입력

5
1 3 5 7 7
7

예제 1 출력

5

예제 2 입력

5
1 2 3 4 5
7

예제 2 출력

6

Source

def upper_bound(N, arr, K):
    answer = N
    l = 0
    r = N - 1

    while(l <= r):
        m = (l + r) // 2
        if(arr[m] <= K):
            l = m + 1
        else:
            r = m - 1
            answer = m

    return answer + 1

N = int(input())
arr = list(map(int, input().split()))
K = int(input())

print(upper_bound(N, arr, K))