대개 백준문제를 풀다보면 sys.stdin.readline()을 활용하는 게 input()보다 속도 면에서 유리하다고 써있는 경우가 많다. (ex : https://dailyheumsi.tistory.com/32)
코드를 작성하고 틀린 것을 못찾았는데 이 부분 때문에 1시간 정도 헤매었다.. 기억하기 위해 기록하자.
와 근데, sys.stdin과 sys.stdin.readline() 및 sys.stdin.readlines() 를 비교하다가 2시간 더 날렸다. 와우.. 공식 문서에도 제대로 못찾겠어서 일단은 Skip..
# 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()을 붙여주곤 한다.
개념은 아래 그림과 같다. middle 값을 계속 변경해주면서 값을 찾아나가는 것이다.
이진검색 함수를 짜면 아래와 같다. 주석 잘 보고 파이팅하자. 주석을 잘 적는 연습을 하자!
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
오 업다운 게임인가!!??!!??