https://www.acmicpc.net/problem/10820
10820번: 문자열 분석
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있
www.acmicpc.net
문제는 굉장히 쉽게 느껴졌는데 막힌 부분은 '언제까지 입력해야 되는지' 였다. 이 부분은 EOF를 만나면 입력을 마치는 걸로 인식하고 문제를 풀면 된다. 콘솔창에서 EOF를 치려면 Ctrl과 Z를 같이 누르면 된다. 그리고 아스키코드를 이용하면 쉽게 풀 수 있을 것이다.
코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
int arr[4] = {}; //소문자, 대문자, 숫자, 공백
while (cin.eof() == false) {
getline(cin, str, '\n');
for (int i = 0; i < str.length(); i++) {
if (str[i] >= 97 && str[i] <= 122) { //소문자
arr[0]++;
}
else if (str[i] >= 65 && str[i] <= 90) { //대문자
arr[1]++;
}
else if (str[i] >= 48 && str[i] <= 57) { //숫자
arr[2]++;
}
else if (str[i] == ' ') { //공백
arr[3]++;
}
}
if (cin.eof() == false) {
cout << arr[0] << " " << arr[1] << " " <<
arr[2] << " " << arr[3] << '\n';
arr[0] = 0, arr[1] = 0, arr[2] = 0, arr[3] = 0;
}
}
}
'Algorithm > 알고리즘 문제' 카테고리의 다른 글
[백준/BOJ][C++] 17299번 오등큰수 (0) | 2022.02.17 |
---|---|
[백준/BOJ][C++] 17298번 오큰수 (0) | 2022.02.17 |
[백준/BOJ][C++] 1935번 후위 표기식2 (0) | 2022.02.16 |
[백준/BOJ][C++] 10799번 쇠막대기 (2) | 2022.02.13 |
[백준/BOJ][C++] 17413번 단어 뒤집기 2 (0) | 2022.02.13 |