이 글에서는 파이썬(Python)을 사용하여 주어진 두 리스트에서 서로 공통으로 포함된 요소를 찾아 출력하는 방법을 알아봅니다.
예제
입력 : L1 = [5, 6, 7, 8, 9]
L2 = [5, 13, 34, 22, 90]
출력 : {5}
설명
두 리스트에 모두 존재하는 공통 요소는 5입니다.
알고리즘
1단계 : 사용자 입력으로 두 개의 리스트를 생성합니다.
2단계 : 각 리스트를 집합(set)으로 변환한 뒤, set1 & set2 결과를 출력합니다.
3단계 : set1 & set2 연산은 두 집합의 교집합, 즉 공통 요소들만 담은 집합을 반환합니다.
(set1은 첫 번째 리스트, set2는 두 번째 리스트를 의미합니다.)
예제 코드
# 두 리스트의 공통 요소를 찾는 Python 프로그램
def commonelemnets(a, b):
seta = set(a)
setb = set(b)
if (seta & setb):
print("Common Element ::>",seta & setb)
else:
print("No common elements")
A=list()
n=int(input("첫 번째 리스트의 크기를 입력하세요 ::"))
print("첫 번째 리스트의 요소를 입력하세요 ::")
for i in range(int(n)):
k=int(input(""))
A.append(k)
B=list()
n=int(input("두 번째 리스트의 크기를 입력하세요 ::"))
print("두 번째 리스트의 요소를 입력하세요 ::")
for i in range(int(n)):
k=int(input(""))
B.append(k)
commonelemnets(A,B)
실행 결과
Enter the size of the First List :: 4
Enter the Element of First List ::
4
5
6
7
Enter the size of the Second List :: 4
Enter the Element of Second List ::
1
2
3
4
Common Element ::> {4}
Enter the size of the First List :: 4
Enter the Element of First List ::
1
2
3
4
Enter the size of the Second List :: 4
Enter the Element of Second List ::
5
6
7
8
No common elements
코드 설명
commonelemnets() 함수는 전달받은 두 리스트를 각각 set() 함수로 집합 자료형으로 변환합니다. 이후 비트 연산자 &(AND 연산)를 사용해 두 집합의 교집합을 구합니다. 교집합에 요소가 존재하면 해당 공통 요소들을 출력하고, 교집합이 비어 있다면 "공통 요소가 없다"는 메시지를 출력합니다.
리스트를 집합으로 변환하면 중복된 요소가 제거되고 탐색 속도도 빨라지기 때문에, 이 방식은 두 리스트의 규모가 커져도 효율적으로 동작한다는 장점이 있습니다.