<aside> 💬 lv0, 탐색

숫자 배열 탐색

문제 설명

정렬된 숫자 배열과 타겟 숫자가 주어집니다. 주어진 배열에서 타겟 숫자의 위치(인덱스)를 찾는 코드를 작성해주세요. 배열에 타겟 숫자가 없는 경우 False를 반환합니다.


제한 사항


입출력 예

입력 (배열, 타겟 숫자) 출력 (타겟 숫자의 위치 또는 False)
([1, 3, 5, 7, 9], 5) 2
([2, 4, 6, 8, 10], 7) False

입출력 설명

첫 번째 예시에서는 타겟 숫자 5가 배열의 인덱스 2에 위치하므로 2를 반환합니다. 두 번째 예시에서는 타겟 숫자 7이 배열에 없으므로 False를 반환합니다.

</aside>

😺 풀이 1. 선형 탐색 사용

def solution(data):
    arr, target = data
    **#1 타겟 숫자 존재 여부 확인 및 #2 타겟 숫자의 인덱스 반환**
    **#3 타겟 숫자 미존재 시 처리**
    return arr.index(target) if target in arr else False  

단계별 풀이 전략

  1. 타겟 숫자 존재 여부 확인

    주어진 배열 arr 내에서 타겟 숫자 target의 존재 여부를 확인합니다.

  2. 타겟 숫자의 인덱스 반환

    타겟 숫자가 배열 내에 존재하는 경우, 해당 숫자의 인덱스를 반환합니다.

  3. 타겟 숫자 미존재 시 처리:

    타겟 숫자가 배열 내에 존재하지 않는 경우, False를 반환합니다.

알아둬야 할 개념

선형 탐색 (Linear Search)

풀이 2. 예외 처리 사용

def solution(data):
    arr, target = data
    try: **#1 try-except 블록 설정**
        res = arr.index(target)  **#2 index() 메소드 사용**
    except:
        res = False **#3 예외 처리 및 False 반환**
    return res **#4 결과 반환**

단계별 풀이 전략

  1. try-except 블록 설정

    try-except 블록을 설정하여 index() 메소드를 사용할 때 발생할 수 있는 예외를 처리합니다. 이 방법은 예상치 못한 에러에 대비하여 프로그램의 안정성을 높이는 데 유용합니다.

  2. index() 메소드 사용

    배열에서 타겟 숫자의 인덱스를 찾기 위해 index() 메소드를 사용합니다. 이 메소드는 주어진 값을 찾고 그 위치(인덱스)를 반환합니다. 타겟 숫자가 배열 내에 존재하는 경우, 그 인덱스가 반환됩니다.

  3. 예외 처리 및 False 반환

    타겟 숫자가 배열 내에 존재하지 않을 경우, index() 메소드는 ValueError 예외를 발생시킵니다. except 블록을 통해 이 예외를 포착하고, 이 경우 함수에서는 False를 반환합니다. 이는 타겟 숫자가 배열 내에 없음을 나타냅니다.

  4. 결과 반환

    타겟 숫자가 배열 내에 존재하는 경우, 그 인덱스를 반환합니다. 그렇지 않은 경우, 즉 예외가 발생한 경우에는 False를 반환합니다. 이로써 타겟 숫자의 존재 여부와 위치 정보를 효과적으로 전달할 수 있습니다.

알아둬야 할 개념

index() 메서드