코딩테스트 & 문제 풀이

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

Hicecream 2023. 12. 20. 16:23

2023년 2월 18일에 작성됨

 

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

 

1264번: 모음의 개수

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

www.acmicpc.net

 

 

문제 분석

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

 

 

소스 코드 (⭕)

#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는 익숙하지 않아서 푸는데 조금 시간이 걸렸다.