1. 이분검색
임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수
중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는
프로그램을 작성하세요. 단 중복값은 존재하지 않습니다.
▣ 입력설명
첫 줄에 한 줄에 자연수 N(3<=N<=1,000,000)과 M이 주어집니다.
두 번째 줄에 N개의 수가 공백을 사이에 두고 주어집니다.
▣ 출력설명
첫 줄에 정렬 후 M의 값의 위치 번호를 출력한다.
import sys
sys.stdin=open("input.txt", "r")
N, K= map(int, input().split()) #각 변수에 대입하고 싶은 경우
a = list(map(int, input().split())) #리스트에 여러 값을 대입하고 싶은 경우
a.sort()
lt=0
rt=N-1
while lt <= rt:
mid =(lt + rt)//2
if a[mid] == K:
print(mid+1)
break
elif a[mid] > K:
rt =mid -1
else:
lt =mid +1
'파이썬 알고리즘 > 이분탐색 & 그리디 알고리즘' 카테고리의 다른 글
6. 씨름 선수(그리디) (0) | 2022.11.03 |
---|---|
5. 회의실 배정 (0) | 2022.11.03 |
4. 마구간 정하기 (0) | 2022.11.03 |
3. 뮤직비디오 (0) | 2022.11.03 |
2. 랜선 자르기 (0) | 2022.11.03 |