Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 리스트에 숫자와 그 두 배 값이 함께 존재하는지 확인하는 방법

배열(리스트) 안에 특정 숫자와 그 숫자의 두 배에 해당하는 값이 동시에 존재하는지 확인해야 하는 경우가 있습니다. 이때는 리스트를 반복(iteration)하면서 각 요소에 2를 곱한 뒤, 해당 값이 리스트 안에 있는지 검사하면 됩니다.

예제 코드

아래는 이를 구현한 예제입니다.

def check_double_exists(my_list):
   for i in range(len(my_list)):
      for j in (my_list[:i]+my_list[i+1:]):
         if 2*my_list[i] == j:
            print("두 배 값이 존재합니다")

my_list = [67, 34, 89, 67, 90, 17, 23]
print("리스트 :")
print(my_list)
check_double_exists(my_list)

실행 결과

리스트 :
[67, 34, 89, 67, 90, 17, 23]
두 배 값이 존재합니다

코드 설명

  • 먼저 check_double_exists라는 이름의 함수를 정의하고, 리스트를 매개변수로 전달받습니다.

  • 함수 내부에서는 리스트를 순회하면서 각 요소에 2를 곱한 값이 나머지 요소 중에 존재하는지 확인합니다.

  • 이때 my_list[:i] + my_list[i+1:] 슬라이싱 기법을 사용해 현재 검사 중인 요소 자기 자신은 비교 대상에서 제외합니다.

  • 두 배에 해당하는 값을 찾으면 관련 메시지를 출력합니다.

  • 함수 외부에서는 리스트를 하나 정의하고, 콘솔에 출력합니다.

  • 마지막으로 정의된 함수를 호출하면서 리스트를 인자로 전달하고, 결과가 콘솔에 표시됩니다.

참고: 더 효율적인 방법

위 방식은 이중 반복문을 사용하기 때문에 시간 복잡도가 O(n²)입니다. 리스트가 클 경우에는 집합(set)을 활용하면 O(n)으로 최적화할 수 있습니다.

def check_double_exists_fast(my_list):
    seen = set()
    for num in my_list:
        if num * 2 in seen or (num % 2 == 0 and num // 2 in seen):
            return True
        seen.add(num)
    return False

이처럼 파이썬에서는 간단한 반복문부터 집합 자료구조까지 다양한 방법으로 문제를 해결할 수 있습니다.