datas = [3,2,5,7,9,1,0,8,6,4]
searchData = int(input('찾으려는 숫자 입력: '))
searchResultIdx = -1 # 존재하지 않는 인덱스로 초기화
n = 0 # 인덱스
while True:
if n == len(datas):
searchResultIdx = -1 # 찾으려는 숫자가 없다면 다시 초기화
break
elif datas[n] == searchData:
searchResultIdx = n
break
n += 1
print(f'searchResultIdx : {searchResultIdx}')
Python
복사
보초법
마지막 인덱스에 찾으려고 하는 값을 의도적으로 집어넣어 마지막 인덱스에서 찾으면 못찾은 것이라고 판단하는 기술
예를 들어 숫자 9를 찾으려고 한다고 하면
인위적으로 마지막 인덱스에 9를 삽입해서
•
검색 성공 : 마지막 인덱스 이전에 9가 검색될 경우
•
검색 실패 : 마지막 인덱스에서 9가 검색된 경우
datas = [3,2,5,7,9,1,0,8,6,4]
searchData = int(input('찾으려는 숫자 입력: '))
searchResultIdx = -1 # 존재하지 않는 인덱스로 초기화
# 1. 인위적으로 마지막에 추가한다.
datas.append(searchData)
n = 0
while True:
if datas[n] == searchData: # 일치하는 값이 있다고 할 때
if n != len(searchData) - 1: #일치하는 값이 마지막 인덱스가 아닐 경우
searchResultIdx = n
break # 일치하는 값이 중간에서 발생하든, 마지막 인덱스이든 while 문은 빠져나와야 한다.
n += 1
print(f'datas: {datas}')
print(f'datas length: {len(datas)}')
print(f'searchResultIdx: {searchResultIdx}')
Python
복사
ex 1.
# 리스트에서 가장 앞에 있는 숫자 '7'을 검색하고 위치를 출력하자.
nums = [4,7,10,2,4,7,0,2,7,3,9]
for i in range(len(nums)): # 리스트의 전체 개수만큼 확인한다.
if nums[i] == 7:
print(f'숫자 7의 위치: {i}')
break
if i == len(nums) -1:
print('찾는 숫자가 없습니다.')
# 숫자 7을 모두 검색해서 각각의 인덱스와 검색 개수를 출력하자
nums = [4,7,10,2,4,7,0,2,7,3,9]
idx = []
count = 0
for i in range(len(nums)): # 리스트의 전체 개수만큼 확인한다.
if nums[i] == 7:
print(f'숫자 7의 위치: {i}')
count += 1
idx.append(i)
continue
print(f'7의 모든 인덱스 위치: {idx}')
print(f'7의 총 개수: {count}')
Python
복사
# 리스트에서 가장 앞에 있는 숫자 '7'을 검색하고 위치를 출력하자.
nums = [4,7,10,2,4,7,0,2,7,3,9]
searchData = int(input('input search Number :'))
searchResultIdx = -1
nums.append(searchData)
n = 0
while True:
if nums[n] == searchData:
if n != len(nums)-1:
searchResultIdx = n
break
n += 1
# 입력한 숫자의 모든 인덱스 위치와 개수를 출력하자.
nums = [4,7,10,2,4,7,0,2,7,3,9]
searchData = int(input('input search Number :'))
searchResultIdx = []
nums.append(searchData)
n = 0
while True:
if nums[n] == searchData:
if n != len(nums) - 1:
searchResultIdx.append(n)
break
n += 1
Python
복사
# line.py
def SearchNumberByline(ns,sn):
searchNumberIdx = -1 # 일단 찾은 숫자의 Index 를 -1로 초기화
print(f'Numbers : {ns}')
print(f'search Numbers : {sn}')
# 선형 검색 시작
n = 0
while True:
if n == len(ns): # 찾는 숫자를 찾지 못한 경우
print('Search Fail!')
break
if ns[n] == sn:
searchNumberIdx = n
print('Search success!')
print(f'Search result Index : {searchNumberIdx}')
break
n += 1
return searchNumberIdx
Python
복사
# 숫자로 이루어진 리스트에서 사용자가 입력한 숫자를 검색하는 모듈을 만들자
# 검색 모듈을 선형 검색을 이용한다
# 리스트는 1 ~ 20 까지의 정수 중에서 난수 10개를 이용한다.
# 검색 과정을 로그로 출력하자
# 검색에 성공하면 해당 정수의 인덱스를 출력하고 검색 결과가 없다면 -1을 출력하자.
import line
import random
nums = random.sample(range(1,21),10)
searchNum = int(input('검색할 숫자: '))
resultIdx = line.SearchNumberByline(nums,searchNum)
if resultIdx == -1: # 찾은 숫자가 없는 경우
print('No results found!')
print(f'search result index : {resultIdx}')
else: # 찾은 숫자가 있는 경우
print('>>> Search Results <<<')
print(f'search result index : {resultIdx}')
print(f'search result number : {nums[resultIdx]}')
Python
복사