알고리즘 공부

범위를 좁혀가는 탐색

코딩 코딩 코오딩 2021. 4. 1. 13:39

가장 기본 탐색인 "순차 탐색"을 알아보자

 

순차 탐색이란 '리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법'

1) 보통 정렬되지 않은 리스트에서 데이터를 찾아야 할 때 사용

2) 리스트 내에 데이터가 아무리 많아도 시간만 충분하다면 항상 원하는 원소를 찾을 수 있는 장점이 있음

 

순차 탐색의 구조를 보자

a b c d e 중 c 를 찾아보는 예이다

 

step0) 초기 단계

a b c d e 

 

step1) 가장 먼저 첫 번째 데이터를 확인 한다. a 는 찾고자 하는 문자열과 같지않다. 따라서 다음 데이터로 이동한다.

a b c d e 

 

step2) 두 번째 데이터를 확인한다. b 또한 찾고자 하는 문자열과 같지 않다. 다음 데이터로 이동한다.

a b c d e 

 

step2) 세 번째 데이터를 확인한다. c 는 찾고자 하는 문자열과 같다. 다음 탐색을 마친다.

a b c d e 

 

순차 탐색은 이름처럼 순차로 데이터를 탐색한다. 

리스트의 데이터에 하나씩 방문하며 특정한 문자열과 같은지 검사하는 것이다.

 

다음은 순차 탐색 소스코드 예시이다.

 

# 순차 탐색 소스코드 구현
def sequential_search(n, target, array):
    # 각 원소를 하나씩 확인하며
    for i in range(n):
        # 현재의 원소가 찾고자 하는 원소와 동일한 경우
        if array[i] == target:
            return i + 1 # 현재의 위치 반환 (인덱스는 0부터 시작하므로 1 더하기)
    return -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))

 

순차 탐색의 경우 하나하나씩 확인해가며 원하는 target을 찾는 것이다.

함수를 통해 원하는 target을 발견하고 인덱스(i +1)를 반환한다.

이해에는 큰 어려움이 없었다.  

 

 

<출처> 이것이 코딩 테스트다 (나동빈 지음)

반응형