개요
두 문자열에 각각 존재하지만 두 문자열에 공통으로 포함되지 않은 문자를 표시해야 하는 경우가 있습니다. 이때 사용자로부터 입력을 받은 뒤 파이썬의 list(리스트)와 set(집합) 자료구조를 활용하면 손쉽게 구현할 수 있습니다.
리스트(List)란?
리스트는 서로 다른 타입의 값을 함께 저장할 수 있는 자료구조입니다. 정수, 실수, 문자열 등 어떤 데이터 타입이든 저장할 수 있으며, list() 메서드를 사용하면 주어진 반복 가능한(iterable) 객체를 리스트 타입으로 변환할 수 있습니다.
집합(Set)이란?
파이썬에는 set이라는 내장 자료형이 기본으로 제공됩니다. 집합은 중복을 허용하지 않는 고유한(unique) 요소만 가지며, 교집합(intersection), 차집합(difference), 합집합(union), 대칭차집합(symmetric difference) 같은 집합 연산을 수행할 때 특히 유용합니다.
예제 코드
다음은 두 문자열에서 한쪽에만 존재하는 문자를 찾아 출력하는 프로그램입니다.
my_str_1 = input("Enter the first string...")
my_str_2 = input("Enter the second string...")
my_result = list(set(my_str_1)^set(my_str_2))
print("The letters in strings but not in both the strings are :")
for i in my_result:
print(i)
실행 결과
Enter the first string...Jane Enter the second string...Kane The letters in strings but not in both the strings are : K J
코드 설명
input()함수를 통해 첫 번째 문자열과 두 번째 문자열, 두 개의 사용자 입력을 받습니다.- 각 문자열을
set()으로 변환하여 집합 구조로 만듭니다. ^연산자를 사용해 두 집합 간의 대칭차집합(symmetric difference) 연산을 수행합니다. 즉, 두 집합 중 한쪽에만 존재하는 요소들만 결과로 남게 됩니다.- 연산 결과를
list()로 변환하여 변수에 저장합니다. for문으로 결과를 순회하며 콘솔에 하나씩 출력합니다.
핵심 포인트
위 예제에서 "Jane"과 "Kane"의 공통 문자는 'a', 'n', 'e'이므로 결과에서 제외되고, 첫 번째 문자열에만 있는 'J'와 두 번째 문자열에만 있는 'K'만 출력됩니다. 참고로 집합은 요소의 순서를 보장하지 않기 때문에 출력 순서는 실행할 때마다 달라질 수 있다는 점도 기억해 두면 좋습니다.