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

Python으로 주어진 문자열이 이진 문자열인지 확인하는 방법

이 글에서는 주어진 문자열이 오직 01로만 구성되어 있는지, 즉 이진 문자열(binary string)인지 확인하는 방법을 알아봅니다. 만약 문자열에 2나 3 같은 다른 숫자가 포함되어 있다면 해당 문자열은 이진 문자열이 아닌 것으로 분류합니다.

1. set(집합) 활용하기

Python의 set은 중복 없는 고유한 요소만 저장합니다. 따라서 문자열에 set() 함수를 적용하면 해당 문자열을 구성하는 고유한 문자들만 남게 됩니다.

여기에 0과 1만을 요소로 가지는 또 다른 집합을 만들어 비교합니다. 두 집합이 같다면 그 문자열은 확실히 이진 문자열입니다. 단, 문자열이 1만 포함하거나 0만 포함하는 경우도 있으므로, 집합이 {'0'} 또는 {'1'}과 일치하는 경우도 OR 조건으로 함께 검사합니다.

예제 코드

stringA = '0110101010111'
b = {'0','1'}
t = set(stringA)

if b == t or t == {'0'} or t == {'1'}:
    print("StringA is a binary string.")
else:
    print("StringA is not a binary string.")

stringB = '0120101010111'
u = set(stringB)

if b == u or u == {'0'} or u == {'1'}:
    print("StringB is a binary string.")
else:
    print("StringB is not a binary string.")

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

StringA is a binary string.
StringB is not a binary string.

2. 단순 반복문 활용하기

두 번째 방법은 값이 '01' 또는 '10'인 기준 문자열을 먼저 선언하고, 주어진 문자열의 각 문자가 이 기준 문자열에 포함되어 있는지 하나씩 비교하는 방식입니다. 기준에 없는 문자가 발견되면 즉시 반복을 중단하고 해당 문자열을 이진 문자열이 아닌 것으로 판정합니다.

예제 코드

stringA = "01100000001"

b = '10'
count = 0
for char in stringA:
    if char not in b:
        count = 1
        break
    else:
        pass
if count:
    print("StringA is not a binary string")
else:
    print("StringA is a binary string")

stringB = "01200000001"
for char in stringB:
    if char not in b:
        count = 1
        break
    else:
        pass
if count:
    print("StringB is not a binary string")
else:
    print("StringB is a binary string")

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

StringA is a binary string
StringB is not a binary string

마무리

두 방법 모두 문자열이 이진 문자열인지 효과적으로 판별할 수 있습니다. set을 사용하는 방법은 코드가 간결하고 집합 연산으로 빠르게 비교할 수 있는 장점이 있으며, 반복문을 사용하는 방법은 로직이 직관적이라 이해하기 쉽습니다. 상황에 맞게 적절한 방법을 선택하여 사용하면 됩니다.