10984번: 내 학점을 구해줘
문제 )
팬그램은 모든 알파벳을 적어도 한 번씩을 사용한 영어 문장을 말한다.
다음은 유명한 팬그램 중 하나이다.
The quick brown fox jumps over a lazy dog
더블 팬그램은 모든 알파벳을 적어도 두 번씩은 사용한 문장을 말하고,
트리플 팬그램은 모든 알파벳을 적어도 세 번씩은 사용한 문장을 말한다.
더 이어나갈 수도 있겠지만 시간상 여기까지만 하도록 하겠다.
입력 :
입력은 여러 줄의 테스트케이스들로 이루어진다.
첫째 줄에 테스트케이스의 수 n이 주어진다.
각 테스트케이스는 영어 소문자와 대문자, 특수기호들로 이루어진다.
출력 :
각 케이스마다 한 줄에 하나씩 다음 중 하나를 출력한다.
- 팬그램이 아닐 경우 - Not a pangram
- 팬그램일 경우 - Pangram!
- 더블 팬그램일 경우 - Double pangram!!
- 트리플 팬그램일 경우 - Triple pangram!!!
트리플 팬그램일 경우에는 자연스럽게 팬그램과 더블 팬그램이 되지만, Triple pangram!!!만을 출력한다. 더블 팬그램도 마찬가지이다.
풀이)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
cin.ignore();
for (int a = 0; a < n; a++) {
string sentence;
getline(cin, sentence);
int alpha[26]{ 0 };
// 문장 전체를 소문자로 바꿔줌
transform(sentence.begin(), sentence.end(), sentence.begin(), ::tolower);
int sentence_len = sentence.length() + 1;
for (int i = 0; i < sentence_len; i++) {
int alpha_num = sentence[i] - 'a';
if (alpha_num >= 0 && alpha_num <= 26) {
alpha[alpha_num]++;
}
}
// 배열 중 최소 값 찾기
int min_num = 10;
for (auto& ele : alpha) {
min_num = min_num > ele ? ele : min_num;
}
cout << "Case " << a + 1 << ": ";
if (min_num == 3) {
cout << "Triple pangram!!!\n";
}
else if (min_num == 2) {
cout << "Double pangram!!\n";
}
else if (min_num == 1) {
cout << "Pangram!\n";
}
else {
cout << "Not a pangram\n";
}
}
return 0;
}
|
cs |
출처 : https://www.acmicpc.net/problem/10384
10384번: 팬그램
팬그램은 모든 알파벳을 적어도 한 번씩을 사용한 영어 문장을 말한다. 다음은 유명한 팬그램 중 하나이다. The quick brown fox jumps over a lazy dog 더블 팬그램은 모든 알파벳을 적어도 두 번씩은 사용
www.acmicpc.net
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 11966번 : 2의 제곱인가? (C++) (0) | 2023.02.07 |
---|---|
[백준] 11816번 : 8진수, 10진수, 16진수 (C++) (0) | 2023.02.07 |
[백준] 2161번 : 카드1 (C++) (0) | 2023.02.07 |
[백준] 11637번 : 인기 투표 (C++) (0) | 2023.02.07 |
[백준] 5555번 : 반지 (C++) (0) | 2023.02.07 |