두 숫자에 존재하는 모든 고유한 비공통 자릿수를 출력해야 하는 경우, 두 개의 정수를 매개변수로 받는 함수를 정의하면 간단하게 해결할 수 있습니다. 여기서는 파이썬 집합(set)이 제공하는 symmetric_difference 메서드를 활용해, 두 숫자 중 어느 한쪽에만 등장하는 자릿수를 손쉽게 추출합니다.
예제
아래는 실제 동작 과정을 보여주는 예제 코드입니다.
def distinct_uncommon_nums(val_1, val_2):
val_1 = str(val_1)
val_2 = str(val_2)
list_1 = list(map(int, val_1))
list_2 = list(map(int, val_2))
list_1 = set(list_1)
list_2 = set(list_2)
my_list = list_1.symmetric_difference(list_2)
my_list = list(my_list)
my_list.sort(reverse=True)
for i in my_list:
print(i)
num_1 = 567234
num_2 = 87953573214
print('첫 번째 숫자의 값:')
print(num_1)
print('두 번째 숫자의 값:')
print(num_2)
distinct_uncommon_nums(num_1, num_2)
실행 결과
첫 번째 숫자의 값:
567234
두 번째 숫자의 값:
87953573214
9
8
6
1
코드 설명
- 'distinct_uncommon_nums'라는 이름의 함수가 정의되며, 두 개의 정수를 매개변수로 받습니다.
- 두 정수는 먼저 문자열로 변환된 뒤, 각 자릿수를 정수로 매핑(map)하여 리스트로 만듭니다.
- 리스트를 집합(set)으로 변환하면 중복된 자릿수가 제거되어 고유한 값만 남습니다.
symmetric_difference메서드는 두 집합 중 한쪽에만 존재하는 요소, 즉 대칭차집합을 반환합니다. 이를 통해 두 숫자의 비공통 자릿수를 구할 수 있습니다.- 결과 집합은 다시 리스트 형태로 변환됩니다.
sort(reverse=True)를 사용해 내림차순으로 정렬합니다.- 정렬된 자릿수를 반복문으로 하나씩 콘솔에 출력합니다.
- 함수 외부에서 두 숫자를 정의하고 값을 콘솔에 표시한 뒤, 해당 함수를 호출합니다.
- 최종적으로 9, 8, 6, 1이라는 네 개의 비공통 자릿수가 내림차순으로 출력됩니다.
마무리
이처럼 파이썬의 집합 연산을 활용하면 복잡한 조건문 없이도 두 숫자 또는 두 문자열 간의 차이를 비교하는 문제를 몇 줄의 코드로 깔끔하게 해결할 수 있습니다. 특히 symmetric_difference는 교집합을 제외한 나머지 요소를 한 번에 구해주기 때문에, 데이터 비교 작업에서 매우 유용하게 활용됩니다.