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

파이썬으로 두 리스트에 공통 요소가 있는지 확인하는 프로그램

이 글에서는 사용자로부터 입력받은 두 개의 리스트에 공통 요소가 하나라도 존재하는지 확인하는 파이썬 프로그램을 다룹니다. 가장 기본적인 방법인 순회(traversal) 기법을 사용하여, 첫 번째 리스트의 각 요소를 두 번째 리스트의 모든 요소와 차례대로 비교하는 방식입니다.

예시

입력 : A = [10, 20, 30, 50]
       B = [90, 80, 30, 10, 3]
출력 : FOUND

입력 : A = [10, 20, 30, 50]
       B = [100, 200, 300, 500]
출력 : NOT FOUND

알고리즘

commonelement(A, B) — A와 B는 사용자가 입력한 두 개의 리스트입니다.

  1. 결과를 저장할 변수 c를 선언하고 초기값을 "NOT FOUND"로 설정합니다.
  2. 이중 반복문으로 두 리스트를 순회하며, 첫 번째 리스트의 모든 요소를 두 번째 리스트의 모든 요소와 비교합니다.
  3. 공통 요소가 발견되면 c에 "FOUND"를 저장하고 즉시 반환하며, 끝까지 발견되지 않으면 "NOT FOUND"를 반환합니다.

예제 코드

# 두 리스트에 최소 한 개의 공통 요소가 있는지
# 리스트 순회를 통해 확인하는 파이썬 프로그램

def commonelement(A, B):
    c = "NOT FOUND"

    # 첫 번째 리스트 순회
    for i in A:
        # 두 번째 리스트 순회
        for j in B:
            # 공통 요소를 발견한 경우
            if i == j:
                c = "FOUND"
                return c
    return c

# 드라이버 코드
A = list()
B = list()
n1 = int(input("첫 번째 리스트의 크기를 입력하세요 ::"))
print("첫 번째 리스트의 요소를 입력하세요 ::")
for i in range(n1):
    k = int(input(""))
    A.append(k)

n2 = int(input("두 번째 리스트의 크기를 입력하세요 ::"))
print("두 번째 리스트의 요소를 입력하세요 ::")
for i in range(n2):
    k = int(input(""))
    B.append(k)

print("실행 결과 ::", commonelement(A, B))

실행 결과

첫 번째 리스트의 크기 ::4
첫 번째 리스트의 요소 ::
2
1
4
9
두 번째 리스트의 크기 ::5
두 번째 리스트의 요소 ::
9
90
4
89
67
실행 결과 :: FOUND

첫 번째 리스트의 크기 ::4
첫 번째 리스트의 요소 ::
67
89
45
23
두 번째 리스트의 크기 ::4
두 번째 리스트의 요소 ::
1
2
3
4
실행 결과 :: NOT FOUND

더 효율적인 방법: set(집합) 활용하기

위 이중 반복문 방식의 시간 복잡도는 O(n×m)으로, 리스트의 크기가 커지면 성능이 떨어질 수 있습니다. 파이썬의 set 자료형과 교집합 연산자(&)를 사용하면 훨씬 간결하고 빠르게 같은 결과를 얻을 수 있습니다.

def commonelement(A, B):
    return "FOUND" if set(A) & set(B) else "NOT FOUND"

집합 변환은 O(n+m)의 시간 복잡도를 가지므로, 데이터 크기가 클 때 특히 유용합니다. 상황에 따라 가독성 좋은 순회 방식과 효율적인 집합 방식 중 적절한 방법을 선택하면 됩니다.