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

Python으로 숫자가 0과 1로만 이루어졌는지 확인하는 방법

숫자 num이 주어졌을 때, 이 숫자가 오직 01로만 구성되어 있는지 확인해야 합니다.

예를 들어, 입력값이 num = 101101이라면 출력 결과는 True가 됩니다.

문제 해결 접근 방식

이 문제는 다음 단계를 통해 해결할 수 있습니다.

  • num의 모든 자릿수를 요소로 가지는 새로운 집합(set)인 digits_set을 생성합니다.
  • digits_set에서 0을 제거합니다.
  • digits_set에서 1을 제거합니다.
  • 만약 digits_set의 크기가 0이라면, 즉 남은 자릿수가 없다면 True를 반환합니다.
  • 그렇지 않으면 False를 반환합니다.

핵심 아이디어는 집합의 특성을 활용하는 것입니다. 집합은 중복된 값을 저장하지 않기 때문에, num의 모든 자릿수를 집합에 넣은 후 0과 1만 제거했을 때 집합이 비어 있다면 해당 숫자는 0과 1로만 이루어져 있음을 의미합니다.

아래 예시 코드를 통해 더 자세히 이해해 보겠습니다.

예제 코드

def solve(num):
   digits_set = set()

   while num > 0:
      digit = num % 10
      digits_set.add(digit)
      num = int(num / 10)

   digits_set.discard(0)
   digits_set.discard(1)

   if len(digits_set) == 0:
      return True
   return False
   
num = 101101
print(solve(num))

입력

101101

출력

True

코드 동작 원리 설명

  • 자릿수 추출: num % 10 연산을 통해 가장 마지막 자릿수를 얻고, int(num / 10)으로 마지막 자릿수를 제거하며 반복합니다.
  • 집합 활용: 각 자릿수를 digits_set에 추가하면 중복 없이 고유한 자릿수만 저장됩니다.
  • 검증: discard() 메서드로 0과 1을 안전하게 제거한 후(요소가 없어도 오류가 발생하지 않음), 집합이 비었는지 확인하여 최종 결과를 판별합니다.

이 방법의 시간 복잡도는 숫자의 자릿수 길이에 비례하여 O(log n)입니다. 공간 복잡도 역시 최대 10개의 고유한 자릿수만 저장되므로 상수 공간 O(1)로 처리됩니다.