2011,217開発ログ(10日目)-Python input()とsys.stdin.readline()を比較してバイナリ検索関数を作成する


一般的に百俊問題を解くとsysstdin.多くの場合、readline()の使用はinput()よりも速度の面で有利である.(ex : https://dailyheumsi.tistory.com/32 )

でもsysstdinとsys。stdin.readline()は、同時にオープンライン文字("n")を呼び出すので注意!


コードを書くと、エラーが見つからない.この部分は1時間ほどうろうろしていたからだ.覚えるために記録する.
わあでもSYstdinとsys.stdin.readline()とsys.stdin.readline()を比較して、また2時間も無駄にしました.わあ...公式ファイルでも見つからないので、まずはスキップ.

とりあえず、ポイントinput()とsys。stdin.readline()の違いは、行文字("n")がユニークであることです。

# input() 사용 				# sys.stdin.readline() 사용 				
for line in input():			for line in sys.stdin.readline()
    print(type(line))			    print(type(line))
# 결과					#결과
#<class 'str'>				#<class 'str'>				
#<class 'str'>				#<class 'str'>				
#<class 'str'>				#<class 'str'>				
					#<class 'str'>				
上記sys.stdin.readline()の一番右側に「n」が表示されます.
※そのためにrstrip()を貼り付けます.

バイナリ検索は、アレイのソート時に使用できます。


コンセプトは下図の通りです.すなわち、medial値を変更し続け、値を検索します.

バイナリ検索関数を構築するには、次のようにします.コメントよく見て頑張ってね注釈を書く練習をしましょう.
def bin_search(a, key):             	   #a에서 key와 일치하는 원소를 이진 검색 하는 함
    low = 0	                           #검색 범위 맨 앞 원소의 인덱스
    high = len(a) - 1                      #검색 범위 맨 끝 원소의 인덱스
    while True :
        middle = (low + high) // 2         #중앙 원소 인덱스
        if a[middle] == key:
            return True                    #검색 성공
        elif a[middle] < key:
            low = middle +1
        else :
            high = middle -1
        if low > high:
            break
    return False