<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()
메서드