Baekjoon Online Judge
문제
영문 문장을 입력받아 모음의 개수를 세는 프로그램을 작성하시오. 모음은 'a', 'e', 'i', 'o', 'u'이며 대문자 또는 소문자이다.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다.
입력의 끝에는 한 줄에 '#' 한 글자만이 주어진다.
출력
각 줄마다 모음의 개수를 세서 출력한다.
예제 입력 | 예제 출력 |
How are you today? Quite well, thank you, how about yourself? I live at number twenty four. # |
7 14 9 |
풀이
#include <iostream>
#include <string>
using namespace std;
char vowel[5] = { 'a', 'e', 'i', 'o', 'u' };
int main() {
// 테스트 케이스
string T;
while (true) {
getline(cin, T); // 공백 포함 문자열
// # 입력 시 반복문 종료
if (T == "#") break;
int count = 0; // 모음의 개수
for (int i = 0; i < T.length(); i++) {
// 대문자를 소문자로 변환
if (T[i] >= 'A' && T[i] <= 'Z')
T[i] += 32;
// 모음의 개수
for (int j = 0; j < 5; j++) {
if (T[i] == vowel[j])
count++;
}
}
// 출력
printf("%d\n", count);
}
return 0;
}
모음을 모두 배열에 저장한 뒤 입력된 문자열의 문자 하나하나를 비교해보면서 모음의 개수를 구했다. 이때 공백을 포함한 문자열을 입력받기 위해 getline()을 사용했으며, 대문자를 소문자로 변환하는 과정을 추가했다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 1268번 임시 반장 정하기 (0) | 2022.05.06 |
---|---|
[Baekjoon/C++] 1267번 핸드폰 요금 (0) | 2022.05.06 |
[Baekjoon/C++] 1259번 팰린드롬수 (0) | 2022.05.06 |
[Baekjoon/C++] 1252번 이진수 덧셈 (0) | 2022.05.06 |
[Baekjoon/C++] 성 지키기 1236번 (0) | 2022.04.29 |