<aside> 💬 lv0, 탐색

2차원 배열 탐색

문제 설명

2차원 배열과 타겟 숫자가 주어집니다. 주어진 2차원 배열에서 타겟 숫자가 존재하는지 확인하고, 존재하는 경우 True를, 존재하지 않는 경우 False를 반환하는 코드를 작성해주세요.


제한 사항


입출력 예

입력 (2차원 배열, 타겟 숫자) 출력 (숫자 존재 여부)
([[1, 3, 5], [7, 9, 11], [13, 15, 17]], 7) True
([[2, 4, 6], [8, 10, 12], [14, 16, 18]], 13) False

입출력 설명

주어진 2차원 배열에서 타겟 숫자를 찾아, 존재하는 경우 True를, 존재하지 않는 경우 False를 반환합니다. 첫 번째 예시에서는 타겟 숫자 7이 배열에 존재하므로 True를, 두 번째 예시에서는 타겟 숫자 13이 배열에 존재하지 않으므로 False를 반환합니다.

</aside>

😺 풀이 1. 행 탐색 이용

def solution(data):
    matrix, target = data
    **#1 2차원 배열 순회**
    **#2 `any()` 함수 활용**
    **#3 타겟 숫자 존재 여부 확인**
    **#4 결과 반환**
    return any(target in row for row in matrix)

단계별 풀이 전략

  1. 2차원 배열 순회

    2차원 배열의 각 행을 순회합니다. 이 과정에서 리스트 컴프리헨션을 사용하여 각 행 내의 타겟 숫자 존재 여부를 검사합니다.

  2. any() 함수 활용

    any() 함수를 사용하여 각 행의 타겟 숫자 존재 여부를 확인합니다. 리스트 컴프리헨션을 통해 생성된 각 행에 대한 조건식 결과 리스트를 any() 함수에 전달합니다. 이 함수는 전달받은 리스트 내 어느 하나라도 True가 있다면 True를, 모두 False라면 False를 반환합니다.

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

    리스트 컴프리헨션 내에서, 각 행을 순회하면서 타겟 숫자가 존재하는지 확인합니다. 각 행에 대해 타겟 숫자의 존재 여부를 검사하는 조건식을 포함합니다.

  4. 결과 반환

    any() 함수의 결과를 바탕으로 최종 결과를 반환합니다. 타겟 숫자가 배열의 어느 행에라도 존재하면 True를, 전체 배열에 타겟 숫자가 하나도 없다면 False를 반환합니다. 이 방법은 효율적으로 2차원 배열 내 타겟 숫자의 존재 여부를 한 번의 순회로 확인할 수 있게 해 줍니다.

알아둬야 할 개념

리스트 컴프리헨션


any() 함수

풀이 2. 배열 평탄화 후 탐색

def solution(data):
    array, target = data
    **#1 배열 평탄화**
    flattened_array = sum(array, [])
    **#2 타겟 숫자 존재 여부 확인**
    **#3 결과 반환**
    return target in flattened_array

단계별 풀이 전략