코딩테스트 & 문제 풀이
[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는 익숙하지 않아서 푸는데 조금 시간이 걸렸다.