10820번 - 문자열 분석
문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
입력
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
출력
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
문제 링크
https://www.acmicpc.net/problem/10820
난이도: 브론즈 2
알고리즘 분류
- 구현
- 문자열
C++를 사용한 풀이
#include <iostream>
#include <string>
using namespace std;
class Stack{
private:
int* arr;
int size;
public:
Stack(){
arr=new int[101];
size=0;
}
~Stack(){
delete [] arr;
}
void push(int x);
int pop();
int size_value();
int empty();
int top();
};
void Stack::push(int x){
arr[size]=x;
size++;
}
int Stack::pop(){
if(size==0) return -1;
int value=arr[size-1];
size--;
return value;
}
int Stack::size_value(){
return size;
}
int Stack::empty(){
if(size==0) return 1;
else return 0;
}
int Stack::top(){
if(size==0) return -1;
return arr[size-1];
}
int main(void){
string str("temp");
int i=0;
while(i<100){
//cin.ignore();
cin.clear();
getline(cin,str);
if(str.length()<=0) break;
Stack a;
Stack A;
Stack num;
Stack space;
int len= str.length();
for(int j=0;j<len;++j){
if('a'<=str[j]&&str[j]<='z') a.push(1);
else if('A'<=str[j]&&str[j]<='Z') A.push(1);
else if('0'<=str[j]&&str[j]<='9') num.push(1);
else if(str[j]==' ') space.push(1);
}
cout<<a.size_value()<<" "<<A.size_value()<<" "<<num.size_value()<<" "<<space.size_value()<<endl;
i++;
}
}
댓글남기기