오늘은 알고리즘 첫 타임으로 선형검색을 배우는 날 이다.
선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 찾는다.
[출처 제로베이스]
datas = [3,2,5,7,9,1,0,8,6,4]
print(f'datas: {datas}')
print(f'datas length: {len(datas)}')
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}')
결과는
datas: [3, 2, 5, 7, 9, 1, 0, 8, 6, 4]
datas length: 10
찾으려는 숫자 입력: 1
searchResultIdx: 5
사실 이 코드들을 보니까 떠오르는 것들이 많다.
이전에 리스트 인덱스를 할 때 인덱스를 찾아주는 .index 라던지 딕셔너리에서 키값을 활용해서 value 값을 찾거나
하는 등의 방법들과 크게 다르지가 않다..!
이미 그동안 선형검색을 하고 있었던 것..이어따..
찾고자 하는 숫자의 인덱스 위치를 알려준다!
#실습
nums = [4,7,10,2,4,7,0,2,7,3,9]
searchData = int(input('찾으려는 숫자 입력: '))
searchIdx = -1
nums.append(searchData)
n = 0
while True:
if nums[n] == searchData:
if n != len(nums) -1:
searchIdx = n
break
n += 1
print(f'searchIdx: {searchIdx}')
결과!
찾으려는 숫자 입력: 10
searchIdx: 2
찾고자 하는 숫자의 모든 인덱스 값을 리스트로 반환하는 코드
nums = [4,7,10,2,4,7,0,2,7,3,9]
searchData = int(input('찾으려는 숫자 입력: '))
searchIdx = []
nums.append(searchData)
n = 0
while True:
if nums[n] == searchData:
if n != len(nums) - 1:
searchIdx.append(n)
else:
break
n += 1
print(f'searchIdx: {searchIdx}')
결과!!
찾으려는 숫자 입력: 7
searchIdx: [1, 5, 8]
이렇게 상황에 맞게 코드를 조금씩 수정해서 사용할 수 있다.
사실 강의를 보면서 코드를 짜면 정말 쉽고 빠르게 이해가 되는데,
혼자서 빈화면에 짜보라고 하면 생각하는 시간이 2배이상 걸리는게 현실이다..
코딩테스트는 이래가지고 볼 수 있을까 싶지만
아직 1개월차 파이썬 기초 겨우 뗀 시점이니 너무 불안해하지는 말아야겠다.
난 할 ㅅㅜ 있어!!!!!