[C]백준_1264 : 모음의 개수

Alal11·2023년 2월 18일
0
post-thumbnail

출처

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


문제

영문 문장을 입력받아 모음의 개수를 세는 프로그램을 작성하시오. 모음은 'a', 'e', 'i', 'o', 'u'이며 대문자 또는 소문자이다.


입력

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

입력의 끝에는 한 줄에 '#' 한 글자만이 주어진다.


출력

각 줄마다 모음의 개수를 세서 출력한다.


예제 입출력


알고리즘 분류

  • 구현
  • 문자열

➡️문제 분석

한 줄씩 문장을 입력받고 모음이 있는 경우에 그 개수를 세어주는 식으로 풀어준다.


➡️코드(⭕)

#include <stdio.h>

int main()
{
	char stc[256] = {0};
	int su = 0;

	while (1)
	{
		// scanf()는 공백을 읽을 수가 없다
        // gets()는 줄 바꿈을 입력할 때까지 한 줄을 그대로 읽어들인다
		gets(stc);

		if (stc[0] == '#')
			break;

		for (int i = 0; stc[i] != '\0'; i++) {
			if (stc[i] == 'a' || stc[i] == 'A') su++;
			else if (stc[i] == 'e' || stc[i] == 'E') su++;
			else if (stc[i] == 'i' || stc[i] == 'I') su++;
			else if (stc[i] == 'o' || stc[i] == 'O') su++;
			else if (stc[i] == 'u' || stc[i] == 'U') su++;
		}
		printf("%d\n", su);
		su = 0;
	}
	return 0;
}

➡️코드 분석

  1. 각 줄이 최대 255글자로 이루어져 있으므로 배열 stc의 크기를 NULL 값이 포함된 256 크기로 설정해준다.

  2. 무한 반복문으로 gets() 함수를 써서 stc 배열에 한 줄씩 입력 받아주는데, 만약 #을 입력했다면 break로 무한 반복문을 탈출한다.

  3. for문으로 i=0부터 stc[i]가 NULL 값인 '\0'이 아닐 때까지 i를 1씩 증가하며 반복해준다. 해당 stc[i]가 모음이라면 모음의 개수를 세어주는 su의 값을 1씩 증가시켜준다.

  4. stc[i]가 NULL 값이 되면 for문을 탈출하고 su의 값을 출력해준 다음 su=0으로 초기화 해준다.


➡️end

옛날에 풀다가 포기한 문제를 다시 풀어봤다. 아직 gets는 익숙하지 않아서 푸는데 조금 시간이 걸렸다.

0개의 댓글