<이것이 취업을 위한 코딩 테스트다>를 읽고 정리한 내용입니다.
#순차 탐색
def sequential_search(n,target,array):
for i in range(n): #순차탐색 레쓰고
if array[i]==target: #찾으려는 값과 같다면
return i+1 #그 위치 반환. (현 인덱스+1)
print('생성할 원소 개수를 입력한 다음 한 칸 띄고 찾을 문자열을 입력하세요.')
input_data=input().split()
n=int(input_data[0])
target=input_data[1]
print('앞서 적은 원소 개수만큼 문자열을 입력하세요. 구분은 띄어쓰기 한 칸으로 합니다.')
array=input().split()
print(sequential_search(n, target, array))
#이진 탐색
def binary_search(array, target, start, end):
if start>end:
return None
mid=(start+end)//2
if array[mid]==target: #중간지점 값이 찾는 값이라면
return mid #그 인덱스 반환
elif array[mid]>target: #중간지점 값이 찾는 값보다 크면
return binary_search(array, target, start, mid-1) #앞부분에서 찾아보시오
else: #중간지점 값이 찾는 값보다 작다면
return binary_search(array, target, mid+1, end) #뒷부분에서 찾아보시오.
n, target = map(int, input().split()) #입력받기
array=list(map(int, input().split())) #데이터 입력받기
#이진 탐색 수행 결과 출력
result= binary_search(array, target, 0, n-1) #한번만 함수 호출하려구
if result==None:
print('원소가 존재하지 않습니다.')
else:
print(result+1)
#이진탐색 - 반복문 편
def binary_search(array, target, start, end):
while start<=end:
mid=(start+end)//2
if array[mid]==target: #찾았다면 바로 인덱스 반환
return mid
elif array[mid]>target: #찾는 값보다 중간값이 더 크면
end=mid-1 #앞에서 찾아보자 (범위 조정)
else: #찾는 값보다 중간값이 더 작으면
start=mid+1 #mid 뒤에서 찾아보자
return None
n, target = map(int, input().split()) #입력받기
array=list(map(int, input().split())) #데이터 입력받기
#이진 탐색 수행 결과 출력
result= binary_search(array, target, 0, n-1)
if result==None:
print('원소가 존재하지 않습니다.')
else:
print(result+1)
input()
함수는 동작 속도가 느림. → 시간 초과😵readline()
사용rstrip()
안하고 int()
로 감싸주기만 하면 됨.rstrip()
(맨 오른쪽 엔터 삭제)이나 strip()
으로 ‘\n’을 삭제해주자.import sys
#하나의 문자열 데이터 입력받기
input_data=sys.stdin.readline().rstrip() #rstrip은 엔터 제거
#입력받은 문자열 그대로 출력
print(input_data)