[zerobase_데이터 취업스쿨_스터디노트] 9. 알고리즘

김소희·2023년 11월 22일
0

study_note

목록 보기
9/50

선형검색이란? 보초법?

오늘은 알고리즘 첫 타임으로 선형검색을 배우는 날 이다.

선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 찾는다.

업로드중..

[출처 제로베이스]

파이썬코드로 구현을 해보자

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 값을 찾거나
하는 등의 방법들과 크게 다르지가 않다..!

이미 그동안 선형검색을 하고 있었던 것..이어따..

실습1

찾고자 하는 숫자의 인덱스 위치를 알려준다!

#실습

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

실습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개월차 파이썬 기초 겨우 뗀 시점이니 너무 불안해하지는 말아야겠다.

난 할 ㅅㅜ 있어!!!!!

profile
AI 개발자로 가는 길 두렵지 않아요

0개의 댓글