Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

코딩로그

[백준/BOJ/C++] 11091번 알파벳 전부 쓰기 본문

YJ/C++

[백준/BOJ/C++] 11091번 알파벳 전부 쓰기

Team DAON 2021. 12. 27. 13:47

[문제]

팬그램은 26개의 알파벳, a~z를 최소 한번씩 모두 사용한 문장을 말한다. 아마 가장 유명한 문장은 이것일 것이다. "The quick brown fox jumps over the lazy dog."

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

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

[입력]

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

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

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

[출력]

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

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

[Source Code]

#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;


int main() {
	int num;
	cin >> num;
	cin.ignore();
	for(int i = 0; i < num; i++){
		int alph[26] = {0, };

		string input;
		getline(cin, input);

		for(int j = 0; j < input.length(); j++){
			if(input[j] >= 'A' && input[j]<= 'Z')
				alph[input[j] - 'A']++;
			else if(input[j] >= 'a' && input[j] <= 'z')
				alph[input[j] - 'a']++;
		}

		if(find(alph, alph+25, 0) == alph+25)
			cout << "pangram\n";
		else{
			cout << "missing ";
			for(int i = 0; i < 26; i++){
				if(alph[i] == 0)
					cout << char(i + 'a');
			}
			cout << "\n";
		}
	}
}

[결과 화면]