본문 바로가기
알고리즘/백준

알고리즘(C++) / 백준 10820 : 문자열 분석

by clean_h 2021. 4. 26.
728x90

10820

boj.kr/10820

 

10820번: 문자열 분석

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

www.acmicpc.net

 

문제

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

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

 

입력

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

 

출력

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

 

코드

//10820 문자열 분석
#include <iostream>
#include <string>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	string s;

	for (int j = 0; j < 100; j++) {
		getline(cin, s, '\n');
		if (s.size() == 0) {
			break;
		}
		int a = 0, A = 0, num = 0, blank = 0;
		for (int i = 0; i < s.size(); i++) {
			if (s[i] >= 'a' && s[i] <= 'z') {
				a++;
			}
			else if (s[i] >= 'A' && s[i] <= 'Z') {
				A++;
			}
			else if (s[i] >= '0' && s[i] <= '9') {
				num++;
			}
			else if (s[i] == ' ') {
				blank++;
			}
		}

		cout << a << " " << A << " " << num << " " << blank << "\n";

	}
	return 0;
}

 

설명

띄어쓰기를 함께 입력받을 수 있는 getline으로 문자열을 입력받는다. 

문자가 소문자이면 a를 증가, 대문자이면 A를 증가, 숫자를 입력받으면 num을 증가, 빈칸을 입력받으면 blank를 증가시켜준다.

문자열을 입력받지 않으면 종료한다. 

 

결과

 

고찰

띄어쓰기를 함께 입력받는 getline을 유용하게 쓸 줄 알아야 한다.

 

난이도

◐○

728x90

댓글