Koala - 12기/기초 알고리즘 스터디

[백준/Python] 5704번: 팬그램

haerr 2023. 9. 19. 15:50

https://www.acmicpc.net/problem/5704

문제

팬그램은 알파벳의 모든 글자들을 사용해서 만든 문장이다. "the quick brown fox jumps over a lazy dog"과 "jackdaws loves my big sphinx of quartz"은 팬그램이다. 문장이 주어졌을 때, 팬그램인지 아닌지를 알아내는 프로그램을 작성하시오.


입력

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 많아야 200글자로 이루어져 있는 문장이다. 단어는 공백 하나로 구분되어 있다. 또, 단어는 알파벳 소문자로만 이루어져 있다. 입력의 마지막 줄에는 별표(*)가 하나 주어진다.


출력

각 테스트 케이스에 대해서, 입력으로 주어진 문장이 팬그램이라면 'Y', 아니라면 'N'를 출력한다.


소스코드

while True:
    input_string = input()
    
    if input_string == "*":
        break
        
    else:
        alphabet_set = set(input_string)
        
        if " " in alphabet_set:
            alphabet_set.remove(" ")
        
        if len(alphabet_set) == 26:
            print("Y")
        else:
            print("N")

문제풀이

1. while True로 무한 루프를 만들어서, '*' 가 입력되었을 경우에만 break하도록 한다.

2. 입력받은 문자열로 set를 만든다.

3. 문자열 중 ' ' (공백)이 포함되어 있을 수 있으므로, 있을 경우 remove로 없애준다.

4. 알파벳의 모든 글자로 만들어진 문자열일 경우, set로 만들었을 때 공백 제외 26개의 요소가 있어야 하므로, len을 사용하여 해당 set의 길이가 26인지 확인하고 그에 따라 'Y'와 'N'을 출력한다.