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

파이썬으로 문자열에 숫자·소문자·대문자가 모두 포함되어 있는지 확인하는 방법

문제 개요

하나의 문자열 s가 주어졌을 때, 이 문자열이 다음 세 가지 요소를 모두 포함하고 있는지 확인해야 합니다.

  • 숫자
  • 소문자
  • 대문자

참고: 그 외의 다른 기호나 특수 문자가 섞여 있어도 상관없지만, 위 세 가지 유형은 반드시 존재해야 합니다.

예를 들어 입력이 s = "p25KDs"라면 소문자(p), 숫자(25), 대문자(KD)가 모두 포함되어 있으므로 출력은 True가 됩니다.

해결 접근 방법

이 문제는 불리언(Boolean) 배열을 활용해 다음과 같은 단계로 해결할 수 있습니다.

  • 크기가 3인 배열(arr)을 만들고 False로 초기화합니다.
  • 문자열 s의 각 문자 c를 하나씩 순회하며 아래 조건을 검사합니다.
    • c가 알파벳 또는 숫자라면 → arr[0] = True
    • c가 소문자라면 → arr[1] = True
    • c가 대문자라면 → arr[2] = True
  • 순회가 끝난 후 배열 arr의 모든 요소가 True이면 True를 반환하고, 하나라도 False가 남아 있다면 False를 반환합니다.

여기서 사용되는 파이썬 내장 문자열 메서드는 다음과 같습니다.

  • isalnum(): 문자가 알파벳 또는 숫자인지 확인
  • islower(): 문자가 소문자인지 확인
  • isupper(): 문자가 대문자인지 확인
  • all(): 반복 가능한 객체의 모든 요소가 True일 때만 True 반환

예제 코드

아래 구현 예제를 통해 더 자세히 이해해 보겠습니다.

def solve(s):
    arr = [False]*3
    for c in s:
        if c.isalnum():
            arr[0] = True
        if c.islower():
            arr[1] = True
        if c.isupper():
            arr[2] = True

    return all(arr)

s = "p25KDs"
print(solve(s))

입력

"p25KDs"

출력

True

복잡도 분석

이 알고리즘은 문자열의 길이를 n이라 할 때 각 문자를 한 번씩만 검사하므로 시간 복잡도는 O(n)입니다. 추가로 사용하는 배열의 크기가 고정적(3)이기 때문에 공간 복잡도는 O(1)로 매우 효율적입니다.