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

두 숫자의 고유한 비공통 자릿수를 출력하는 Python 프로그램

두 숫자에 존재하는 모든 고유한 비공통 자릿수를 출력해야 하는 경우, 두 개의 정수를 매개변수로 받는 함수를 정의하면 간단하게 해결할 수 있습니다. 여기서는 파이썬 집합(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는 교집합을 제외한 나머지 요소를 한 번에 구해주기 때문에, 데이터 비교 작업에서 매우 유용하게 활용됩니다.