[백준 BOJ] 1264번 모음의 개수 (C++/cpp)

2022. 5. 1. 01:59PS (Program Solving)/BOJ (백준)

문제 설명

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

 

1264번: 모음의 개수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄

www.acmicpc.net

백준 BOJ 1264번 모음의 개수 문제 사진

 

접근 방법 - 문자열에 대한 조건문 응용문제

백준의 1264번 문제는 문자열과 조건문을 응용하여 해결해야 하는 문제이다.

해당 문제는, 입력받은 각 문자열에 대해 속해있는 모음의 개수를 출력해야 하는 문제이다.

여기서, 영어 알파벳에 대한 모음은 문제에도 기재되어있다시피 a, e, i, o, u 이렇게 5가지가 있다.

필자는 대문자와 소문자의 경우를 모두 고려하여 조건문을 배치하였고, 이를 이용하여 모음의 개수를 카운팅 하였다.

이때 입력받는 문자열에 공백이 포함되어있기 때문에 이를 고려하며 코드를 작성해야 한다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 무한 반복문을 구현하여, 공백을 포함한 문자열(st)을 입력받는다.

(여기서, "#"만 입력받았을 경우 반복문을 즉시 종료한다.)

 

2) 모음의 개수를 저장할 변수 num을 0으로 초기화하여 선언한다.

 

3) st의 길이만큼 반복문을 실행하며, 아래의 연산을 취한다.

- 우선 소문자의 모음을 카운팅 한다. 현재 위치의 문자가 a, e, i, o, u 중 하나라면 num에 1을 더한다.

- 다음으로 대문자의 모음을 카운팅 한다. 현재 위치의 문자가 A, E, I, O, U 중 하나라면 num에 1을 더한다.

 

4) 모음 개수의 측정이 끝났다면, 최종적으로 저장된 num을 출력한다.

 

5) 1) ~ 4)의 과정을 무한으로 반복 실행하며, 해당 반복문이 종료될 시 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
#define endl '\n'
using namespace std;

//백준 1264번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	while (1) {
		string st;
		getline(cin, st);
		if (st == "#") { break; }
		int num = 0;
		for (int i = 0; i < st.length(); i++) {
			if (st[i] == 'a' || st[i] == 'e' || st[i] == 'i' || st[i] == 'o' || st[i] == 'u') {
				num++;
			}
			else if (st[i] == 'A' || st[i] == 'E' || st[i] == 'I' || st[i] == 'O' || st[i] == 'U') {
				num++;
			}
		}
		cout << num << endl;
	}
}

 

제출 결과

백준 BOJ 1264번 모음의 개수 문제 C++ 제출 결과

(2022.04.16 백준 1264번 문제 제출 결과)

반응형