<aside>
💬 lv0, 탐색
정렬된 숫자 배열과 타겟 숫자가 주어집니다. 주어진 배열에서 타겟 숫자의 위치(인덱스)를 찾는 코드를 작성해주세요. 배열에 타겟 숫자가 없는 경우 False를 반환합니다.
| 입력 (배열, 타겟 숫자) | 출력 (타겟 숫자의 위치 또는 False) |
|---|---|
| ([1, 3, 5, 7, 9], 5) | 2 |
| ([2, 4, 6, 8, 10], 7) | False |
첫 번째 예시에서는 타겟 숫자 5가 배열의 인덱스 2에 위치하므로 2를 반환합니다. 두 번째 예시에서는 타겟 숫자 7이 배열에 없으므로 False를 반환합니다.
</aside>
def solution(data):
arr, target = data
**#1 타겟 숫자 존재 여부 확인 및 #2 타겟 숫자의 인덱스 반환**
**#3 타겟 숫자 미존재 시 처리**
return arr.index(target) if target in arr else False
타겟 숫자 존재 여부 확인
주어진 배열 arr 내에서 타겟 숫자 target의 존재 여부를 확인합니다.
타겟 숫자의 인덱스 반환
타겟 숫자가 배열 내에 존재하는 경우, 해당 숫자의 인덱스를 반환합니다.
타겟 숫자 미존재 시 처리:
타겟 숫자가 배열 내에 존재하지 않는 경우, False를 반환합니다.
선형 탐색 (Linear Search)
개념: 선형 탐색은 배열이나 리스트를 처음부터 끝까지 순차적으로 탐색하여 원하는 값을 찾는 방법입니다. 가장 단순한 탐색 알고리즘으로, 특정 조건(예: 특정 값의 존재 여부)을 만족하는 원소를 찾기 위해 리스트의 각 요소를 한 번씩 확인합니다.
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i # 타겟 값의 인덱스 반환
return False # 타겟 값이 리스트 내에 없는 경우
# 사용 예
print(linear_search([1, 3, 5, 7, 9], 5)) # 출력: 2
print(linear_search([2, 4, 6, 8, 10], 7)) # 출력: False
선형 탐색은 구현이 간단하고 어떤 리스트에도 적용할 수 있다는 장점이 있지만, 리스트의 크기가 클 경우 탐색에 많은 시간이 소요될 수 있는 단점이 있습니다.
def solution(data):
arr, target = data
try: **#1 try-except 블록 설정**
res = arr.index(target) **#2 index() 메소드 사용**
except:
res = False **#3 예외 처리 및 False 반환**
return res **#4 결과 반환**
try-except 블록 설정
try-except 블록을 설정하여 index() 메소드를 사용할 때 발생할 수 있는 예외를 처리합니다. 이 방법은 예상치 못한 에러에 대비하여 프로그램의 안정성을 높이는 데 유용합니다.
index() 메소드 사용
배열에서 타겟 숫자의 인덱스를 찾기 위해 index() 메소드를 사용합니다. 이 메소드는 주어진 값을 찾고 그 위치(인덱스)를 반환합니다. 타겟 숫자가 배열 내에 존재하는 경우, 그 인덱스가 반환됩니다.
예외 처리 및 False 반환
타겟 숫자가 배열 내에 존재하지 않을 경우, index() 메소드는 ValueError 예외를 발생시킵니다. except 블록을 통해 이 예외를 포착하고, 이 경우 함수에서는 False를 반환합니다. 이는 타겟 숫자가 배열 내에 없음을 나타냅니다.
결과 반환
타겟 숫자가 배열 내에 존재하는 경우, 그 인덱스를 반환합니다. 그렇지 않은 경우, 즉 예외가 발생한 경우에는 False를 반환합니다. 이로써 타겟 숫자의 존재 여부와 위치 정보를 효과적으로 전달할 수 있습니다.
index() 메서드