아하 로고
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
검소한늑대134
검소한늑대13421.04.16

주피터 노트북 이진탐색 코드 짜는방법?

1부터 100까지의 수를 순서대로 배열한 후 이진탐색을 이용하여 사용자가 입력한 값이 몇번째에 있는가를 반환하는 python 프로그램을 작성하시오

혹시 이 문제에 대한 코드 짜주 실 수 있나요??

저한테는 너무 어려워서요 ㅠㅠ

55글자 더 채워주세요.
답변의 개수1개의 답변이 있어요!
  • 안녕하세요:)

    코드는 다양한 방법대로 짤 수 있을 것 같은데요..🤔 코더마다 스타일이 조금 다를 듯합니다.

    아래에 간단하게 코드를 작성해보았는데 제가 문제를 잘 이해했는지 모르겠네요~

    (※저는 jupyter에서 작성하지 않고 기본 커맨드창에서 짜서 ">>>"이 붙어있어요)

    >>> from random import * >>> import numpy as np >>> tmp=sample(range(1,101),100) # 1~100까지 100개의 정수 생성 >>> a=np.sort(tmp,axis=None) # 1~100까지의 정수 순서대로 배열 >>> x=int(input("1~100까지의 정수를 입력하세요")) #정수값을 입력 5 #저는 예시로 5를 넣었습니다.:D >>> b=np.where(a==x) #input >>> b (array([9], dtype=int64),) # 9번째에 위치 # 출력된 b는 튜플형태이고 여기서 9라는 숫자만 가져오고 싶어서 꼼수를 조금 부렸습니다. >>> result=[a[0] for a in b] # 튜플 내장함수인 __getitem__을 활용/위치만 list로 추출 >>> idx=result[0] # 위치값만 저장 >>> print("입력하신 숫자는 배열의 {0}번째 위치하고 있습니다.".format(idx+1)) # 0번째 위치는 없으니까 1을 더해서 자연스럽게~ 입력하신 숫자는 배열의 10번째 위치하고 있습니다.

    간단하게는 위와 같이 작성할 수 있겠는데요..

    도움이 되셨으면 좋겠습니다~

    혹시나 안되는 부분 있으시면 댓글 주세요.

    감사합니다.