문제 해결/BaekJoon

[백준] [C++] 11319번 Count Me In

WSLim_97 2022. 11. 17. 22:28
반응형

https://www.acmicpc.net/problem/11319

 

11319번: Count Me In

For each sentence, output the number of consonants and vowels on a line, separated by space.

www.acmicpc.net


코드

#include <iostream>
#include <string>
using namespace std;

int main() {
	string input;
	int n;
	cin >> n;
	getchar();
	
	for (int i = 0; i < n; i++) {
		getline(cin, input);
		int vow = 0, con = 0;

		for (int j = 0; j < input.size(); j++) {
			switch(input[j]) {
			case 'A':
			case 'E':
			case 'I':
			case 'O':
			case 'U':
			case 'a':
			case 'e':
			case 'i':
			case 'o':
			case 'u':
				vow = vow + 1;
				break;
			case ' ':
				break;
			default:
				con = con + 1;
				break;
			}
		}
		cout << con << " " << vow << "\n";
	}
	return 0;
}

풀이

영어 문자열을 입력받아 자음과 모음의 수를 각각 출력하는 문제이다.

 

string 라이브러리의 getline 함수를 통해 문자열을 공백이 포함되게 입력받을 수 있다.

 

n번 반복을 위해 cin을 통해 n을 입력받으면 개행 문자인 \n 가 남게 된다. 이때 getline을 만나면 getline 함수는 개행 문자를 만날 때까지 문자를 읽기 때문에 문자를 읽지 못한다.

 

그래서 getchar 함수를 통해 문자 하나를 버려 개행 문자를 없애주는 것이다.

 

그 후 string 형으로 입력받아 for문을 통해 하나하나 문자에 접근한다.

 

switch 문을 통해 모음을 발견하면 vow + 1을 실행하고 공백이면 break를 실행, 그 이외의 문자는 자음 변수인 con + 1을 해준다.

 

그 후 vow와 con을 출력하면 된다.

반응형