본문 바로가기
Develop/백준 (Cpp)

[백준] 10820번 : 문자열 분석 (C++)

by Tarra 2023. 2. 3.

10820번 : 문자열 분석


문제 )

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

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

 

입력 :

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

 

 

 

출력 :

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

 

 

 

 

 

풀이)

C++에서는 각 문자열을 아스키 코드를 통해 처리한다는 것을 알면,

 

크기 비교를 통해 쉽게 풀 수 있는 문제이다.

 

하지만 난 자꾸 틀렸는데,

 

한참을 뒤지고 나서야 그 이유를 알 수 있었다.

 

틀린 이유는 바로 cin.eof() 때문.

 

cin.eof() 메서드의 경우 입력을 받으려고 시도해. 없는 것이 확인되어야 true를 반환한다고 한다.

 

getline의 경우에는 줄바꿈 문자만 읽고 함수가 넘어가기 때문에 루프가 한번 더 돌아

 

 0 0 0 0 과 같은 출력을 한번 더 해서 오답이 났던 것 같다.

 

자세한 내용은 아래 링크에 상세히 설명되어 있으니 가서 읽어보면 좋을 것 같다.

 

https://www.acmicpc.net/board/view/49133

 

글 읽기 - 종료조건에서 질문사항이 있습니다 !!

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string sentence;
    
    while (getline(cin, sentence)) {
        int upper = 0, lower = 0, space = 0, number = 0;
 
        for (int i = 0; i < sentence.length(); i++) {
            if (sentence.substr(i, 1>= "A" && sentence.substr(i, 1<= "Z") {
                upper++;
            }
            else if (sentence.substr(i, 1>= "a" && sentence.substr(i, 1<= "z") {
                lower++;
            }
            else if (sentence.substr(i, 1== " ") {
                space++;
            }
            else if (sentence.substr(i, 1>= "0" && sentence.substr(i, 1<= "9") {
                number++;
            }
        }
 
        cout << lower << " " << upper << " " << number << " " << space << "\n";
    }
 
    return 0;
}
 
cs

출처 : https://www.acmicpc.net/problem/10820 

 

10820번: 문자열 분석

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

www.acmicpc.net

 

'Develop > 백준 (Cpp)' 카테고리의 다른 글

[백준] 10173번 : 니모를 찾아서 (C++)  (0) 2023.02.03
[백준] 2857번 : FBI (C++)  (0) 2023.02.03
[백준] 11656번 : 접미사 배열 (C++)  (0) 2023.02.03
[백준] 10866번 : 덱 (C++)  (1) 2023.02.03
[백준] 10845번 : 큐 (C++)  (0) 2023.02.03