백준 - 10820

아따맘마·2021년 1월 18일
0

알고리즘 - 백준

목록 보기
48/53

문제

문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.

각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.

입력

첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.

출력

첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.

풀이

이 문제에서 알아둬야할 것은 getlineeof이다. 기존에 입력받을 때 scanf나 cin으로 입력을 받았다. 이에 대한 문제점은 공백을 입력시 끊긴다는 것이다. 하지만 getline은 공백까지 입력받을 수 있다. eof는 파일이 종료될때까지 입력받는다는 의미이다.

코드

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

int main()
{
    string str;
    while (getline(cin, str) && !cin.eof()){
        int arr[4] = { 0, };
        for (int i = 0 ; i < str.length() ; i++){
            if (islower(str[i]))
                arr[0]++;
            else if (isupper(str[i]))
                arr[1]++;
            else if (str[i] >= '0' && str[i] <= '9')
                arr[2]++;
            else
                arr[3]++;
        }
        for (int i = 0 ; i<4;i++){
            cout << arr[i] << ' ';
        }
    }
    return (0);
}
profile
늦게 출발했지만 꾸준히 달려서 도착지점에 무사히 도달하자

0개의 댓글