https://www.acmicpc.net/problem/10384
문제
팬그램은 모든 알파벳을 적어도 한 번씩을 사용한 영어 문장을 말한다.
다음은 유명한 팬그램 중 하나이다.
The quick brown fox jumps over a lazy dog
더블 팬그램은 모든 알파벳을 적어도 두 번씩은 사용한 문장을 말하고,
트리플 팬그램은 모든 알파벳을 적어도 세 번씩은 사용한 문장을 말한다.
더 이어나갈 수도 있겠지만 시간상 여기까지만 하도록 하겠다.
입력
입력은 여러 줄의 테스트케이스들로 이루어진다.
첫째 줄에 테스트케이스의 수 n이 주어진다.
각 테스트케이스는 영어 소문자와 대문자, 특수기호들로 이루어진다.
테스트케이스마다 getline을 통해 문장을 입력받고 알파벳 소문자를 모두 대문자로 바꿔준다.
int형 배열 26개를 선언해서 A부터 Z까지 몇번 등장했는지 기록해두고,
마지막에 26번 돌면서 배열에 있는 최소 등장횟수를 찾는다.
최소 등장 횟수가 0이면 팬그램이 아니고, 최소 등장 횟수가 1이면 팬그램, 2이면 더블팬그램, 3이면 트리플 팬그램을 각각 출력 형식에 맞게 출력하였다.
#include <iostream>
#include <string>
using namespace std;
int min(int a,int b){
if(a<b){
return a;
}
else{
return b;
}
}
int main(void){
int t;
cin >> t;
string str;
int first = 1;
while(getline(cin,str)){
int index[26] = {0, };
for(int i = 0;i<str.size();i++){
if(str[i] >= 'a' && str[i] <= 'z'){
str[i] = toupper(str[i]);
}
if(str[i] >= 'A' && str[i] <= 'Z'){
index[str[i]-'A']++;
}
}
int value = index[0];
for(int i = 0;i<26;i++){
value = min(value,index[i]);
}
if(first != 1){
if(value == 0){
cout << "Case" << ' ' << first-1 << ':' << ' ' << "Not a pangram" << '\n';
}
else if(value == 1){
cout << "Case" << ' ' << first-1 << ':' << ' ' << "Pangram!" << '\n';
}
else if(value == 2){
cout << "Case" << ' ' << first-1 << ':' << ' ' << "Double pangram!!" << '\n';
}
else{
cout << "Case" << ' ' << first-1 << ':' << ' ' << "Triple pangram!!!" << '\n';
}
}
first++;
}
}
'알고리즘' 카테고리의 다른 글
백준 2961 도영이가 만든 맛있는 음식 C++ (0) | 2022.07.17 |
---|---|
백준 17182 우주 탐사선 C++ (0) | 2022.07.17 |
백준 4383 점프는 즐거워 C++ (0) | 2022.07.15 |
백준 19699 소-난다! (0) | 2022.07.15 |
백준 18114 블랙 프라이데이 C++ (0) | 2022.07.15 |