[BAEKJOON] 백준 11091: 알파벳 전부 쓰기 (C#)

2024. 9. 4. 17:07IT/BaekJoon

문제 링크

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

 

 

문제

팬그램은 26개의 알파벳, a~z를 최소 한번씩 모두 사용한 문장을 말한다. 아마 가장 유명한 문장은 이것일 것이다.

"The quick brown fox jumps over the lazy dog."

꿍은 다른 문장들중에 팬그램인 것은 없는지 궁금해졌다. 그래서 여러분이 할 일은 꿍을 위해 어떠한 문장이 팬그램인지 아닌지를 판별해주는 프로그램을 짜는 것이다.

팬그램에서는 알파벳의 대소문자를 구분하지 않는다고 하자.

 

 

입력

입력의 첫 번째 줄은 1 ≤ N ≤ 50의 N이 주어진다.

다음 N개의 줄은 각각 한 문장이 주어지는데, 알파벳의 대소문자, 공백, 숫자, 그리고 분장부호들(. , ? ! ' ")이 포함될 수 있다.

각 문장은 최소 한개의 문자를 포함하며 100개를 넘지는 않는다.

 

 

출력

각 입력에 대해, 팬그램에 해당하면 "pangram"을 출력한다.

만약 팬그램이 아닐 경우, "missing"을 출력한 후 한칸 띄고 문장에 나타나지 않은 문자들을 모두 출력한다. 이때, 나타나지 않은 문자들은 모두 소문자로 출력하며 알파벳 순서대로 정렬된상태로 출력해야 한다.

 

 

 

통과한 답안

namespace _11091
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());

            for (int i = 0; i < N; i++)
            {
                string input = Console.ReadLine();
                List<char> list = CheckAlp(input);
                
                if (list.Count == 0)
                {
                    Console.WriteLine("pangram");
                }
                else
                {
                    string rest = string.Join("", list);
                    Console.WriteLine($"missing {rest}");
                }
            }
        }

        static List<char> CheckAlp(string input)
        {
            List<char> result = new List<char>();
            input = input.ToLower();

            for (int i = 0; i < 26; i++)
            {
                result.Add((char)(i + 97));
            }

            for (int i = 0; i < input.Length; i++)
            {
                if (result.Contains(input[i]))
                {
                    result.Remove(input[i]);
                }
            }

            return result;
        }
    }
}

 

주어진 문장이 모든 알파벳을 사용했는지 확인하는 문제이다.

CheckAlp라는 메서드와 List를 이용하여 문제를 해결하였는데,

우선 모든 알파벳 소문자가 포함된 List를 생성한다.

이후에 주어진 문장에 포함된 알파벳을 모두 소문자로 변경한 후에

각각의 알파벳을 위에서 생성한 List와 비교하며

List에 있는 알파벳이라면 제거하는 방식으로 List를 줄인 후에 이를 반환한다.

 

이후에 이 반환된 List의 길이가 0이라면 모든 알파벳을 사용한 것이므로 "pangram"를 출력하고

그렇지 않다면 남아있는 알파벳들을 출력하도록 구현하였다.