본문 바로가기

백준/C++

[Baekjoon/C++] 1264번 모음의 개수

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()을 사용했으며, 대문자를 소문자로 변환하는 과정을 추가했다.