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

파이썬으로 문장이 팬그램(Pangram)인지 확인하는 프로그램 만들기

영어 소문자로만 이루어진 문장 s가 주어졌을 때, 이 문장이 팬그램(pangram)인지 확인해야 합니다. 팬그램이란 알파벳 a부터 z까지 총 26개의 글자를 모두 포함하고 있는 문자열을 의미합니다.


예를 들어, 입력이 s = "thegrumpywizardmakestoxicbrewfortheevilqueenandjack"이라면 a~z의 모든 글자가 포함되어 있으므로 출력 결과는 True가 됩니다.


문제 해결 접근 방법

다음 단계를 따라 문제를 해결할 수 있습니다.

  • 빈 딕셔너리(dictb)를 하나 생성합니다.

  • 문자열 s의 각 문자 i를 순회하면서 해당 문자의 등장 횟수를 딕셔너리에 기록합니다. (dictb[i] = dictb.get(i, 0) + 1)

  • 딕셔너리의 크기, 즉 서로 다른 문자의 개수가 26과 같으면 True를 반환합니다.

  • 그렇지 않으면 False를 반환합니다.


구현 예제

def solve(s):
dictb = {}
for i in s:
dictb[i] = dictb.get(i, 0) + 1
if len(dictb) == 26:
return True
return False

s = "thegrumpywizardmakestoxicbrewfortheevilqueenandjack"
print(solve(s))

입력

"thegrumpywizardmakestoxicbrewfortheevilqueenandjack"

출력

True

더 간결한 대안: set 활용하기

파이썬에서는 집합(set) 자료형을 사용하면 위 로직을 한 줄로 더 간결하게 표현할 수 있습니다. 집합은 중복을 허용하지 않기 때문에, 문자열을 집합으로 변환하면 자동으로 고유한 문자만 남게 됩니다.


def solve(s):
return len(set(s)) == 26

이 방법 역시 시간 복잡도는 O(n)으로 동일하지만, 코드가 훨씬 짧고 가독성이 높아 실무에서 널리 사용됩니다. 반면 딕셔너리 방식은 각 문자별 등장 횟수까지 함께 얻을 수 있다는 장점이 있으므로, 상황에 맞게 선택하면 됩니다.