본문 바로가기
Study (etc)/Problem Solving

[BOJ / C++] 10384번 : 팬그램

by Haren 2022. 12. 2.

문제

팬그램은 모든 알파벳을 적어도 한 번씩을 사용한 영어 문장을 말한다.

다음은 유명한 팬그램 중 하나이다.

The quick brown fox jumps over a lazy dog

더블 팬그램은 모든 알파벳을 적어도 두 번씩은 사용한 문장을 말하고,

트리플 팬그램은 모든 알파벳을 적어도 세 번씩은 사용한 문장을 말한다.

더 이어나갈 수도 있겠지만 시간상 여기까지만 하도록 하겠다.

입력

입력은 여러 줄의 테스트케이스들로 이루어진다.

첫째 줄에 테스트케이스의 수 n이 주어진다.

각 테스트케이스는 영어 소문자와 대문자, 특수기호들로 이루어진다.

출력

각 케이스마다 한 줄에 하나씩 다음 중 하나를 출력한다.

  • 팬그램이 아닐 경우 - Not a pangram
  • 팬그램일 경우 - Pangram!
  • 더블 팬그램일 경우 - Double pangram!!
  • 트리플 팬그램일 경우 - Triple pangram!!!

트리플 팬그램일 경우에는 자연스럽게 팬그램과 더블 팬그램이 되지만, Triple pangram!!!만을 출력한다. 더블 팬그램도 마찬가지이다.

Solved.ac 레벨

실버 V

풀이

#include <bits/stdc++.h>

using namespace std;

int main(){

    int n;
    cin >> n; //테스트 케이스
    cin.ignore();

    for(int i = 1; i <= n; i++){
        string str;
        getline(cin, str);
    
        transform(str.begin(), str.end(), str.begin(), ::tolower);

        int alphabet[26] = {0,};
        for(int j = 0; j < str.length(); j++){
            alphabet[str[j] - 97]++;
        }

        int cnt[3] = {0,}; //[0] : 팬그램 [1] : 더블 팬그램 [2] : 트리플 팬그램

        for(int j = 0; j < 26; j++){
            if(alphabet[j] != 0){
                cnt[0]++;
            }
            if(alphabet[j] == 2){
                cnt[1]++;
            }
            if(alphabet[j] >= 3){
                cnt[2]++;
            }
        }

        if(cnt[2] == 26){
            cout << "Case " << i << ": " << "Triple pangram!!!\n";
        } else if(cnt[1]==26 || cnt[1] + cnt[2] == 26){
            cout << "Case " << i << ": " << "Double pangram!!\n";
        } else if(cnt[0] == 26){
            cout << "Case " << i << ": " << "Pangram!\n";
        } else {
            cout << "Case " << i << ": " << "Not a pangram\n";
        }
    }


    return 0;
}

 

 

10384번: 팬그램

팬그램은 모든 알파벳을 적어도 한 번씩을 사용한 영어 문장을 말한다. 다음은 유명한 팬그램 중 하나이다. The quick brown fox jumps over a lazy dog 더블 팬그램은 모든 알파벳을 적어도 두 번씩은 사용

www.acmicpc.net

참고

 

[BaeKJoon/C++] 백준 10384 c++ 팬그램

https://www.acmicpc.net/problem/10384 10384번: 팬그램 팬그램은 모든 알파벳을 적어도 한 번씩을 사용한 영어 문장을 말한다. 다음은 유명한 팬그램 중 하나이다. The quick brown fox jumps over a lazy dog 더블 팬그

succeeed3256.tistory.com