<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):
    s, target = data
    **#1 타겟 숫자 존재 여부 확인 및** 
    **#2 타겟 숫자의 인덱스 반환**
    **#3 타겟 숫자 미존재 시 처리**
    return s.index(target) if target in s else False 

단계별 풀이 전략

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

    주어진 배열 s에서 타겟 숫자 target이 존재하는지 in 연산자를 통해 확인합니다.

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

    타겟 숫자가 배열 내에 존재한다면, .index() 메소드를 사용해 그 위치(인덱스)를 반환합니다.

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

    타겟 숫자가 배열 내에 없는 경우, False를 반환합니다.

알아둬야 할 개념

조건부 표현식 (Conditional Expression)

풀이 2. enumerate()를 사용한 탐색

def solution(data):
		**#1 문자열 순회 설정**
    for i, c in enumerate(data[0]):  
        t = data[1]  
        **#2 타겟 문자 비교 및 인덱스 반환**
        if c == t:
            return i
    **#3 타겟 문자 미발견**
    return False

단계별 풀이 전략

  1. 문자열 순회 설정

    문자열을 순회하기 위해 enumerate() 함수를 사용합니다. 이 함수는 순회 중인 문자열의 각 문자와 해당 문자의 인덱스를 동시에 반환하므로, 문자와 그 위치를 함께 처리할 수 있습니다.

  2. 타겟 문자 비교 및 인덱스 반환

    순회하는 동안, enumerate() 함수로부터 받은 각 문자를 타겟 문자와 비교합니다. 타겟 문자와 일치하는 문자가 발견되면, 그 문자의 인덱스를 즉시 반환합니다. 이는 타겟 문자를 찾는 즉시 순회를 중단하고 위치 정보를 반환함으로써 효율성을 높입니다.

  3. 타겟 문자 미발견 시 처리

    문자열 전체를 순회했음에도 타겟 문자를 찾지 못한 경우, 즉 모든 문자를 검사한 후에도 타겟 문자가 없는 경우, False를 반환합니다. 이는 타겟 문자가 문자열 내에 존재하지 않음을 나타내며, 함수의 호출자에게 이 정보를 전달합니다.

알아둬야 할 개념

예외 처리 (try-except 블록)