본문으로 바로가기

[백준 10808] 알파벳 개수 문제

category PS/백준 문제풀이 2018. 3. 29. 23:36
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

https://www.acmicpc.net/problem/10808


소문자로만 이루어진 단어에서 각 알파벳이 몇 개 있는지를 파악하는 문제.

몇개를 파악하는 함수는 count()를 이용하면 된다.


count 함수는 첫번째 인자(시작)에서 두번째 인자(끝)까지 안에서 마지막 인자(찾을값)의 개수를 찾아주는 함수다.

algorithm 헤더 파일에 존재하므로 반드시 헤더 선언을 해주길 바란다.


아래는 MSDN에 정의되어 있는 algorithm 헤더 안 count 함수의 정의이다.

Returns the number of elements in a range whose values match a specified value.

template<class InputIterator, class Type> 
    typename iterator_traits<InputIterator>::difference_type count(
        InputIterator _First, 
        InputIterator _Last, 
        const Type& _Val);  

Parameters

_First
An input iterator addressing the position of the first element in the range to be traversed.

_Last
An input iterator addressing the position one past the final element in the range to be traversed.

_Val
The value of the elements to be counted.

Return Value

The difference type of the InputIterator that counts the number of elements in the range [ _First_Last ) that have value _Val.

Remarks

The operator== used to determine the match between an element and the specified value must impose an equivalence relation between its operands.

This algorithm is generalized to count elements that satisfy any predicate with the template function count_if.


아주 쉬운 문제임으로 더 이상의 설명은 생략하고 소스코드를 공개한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
int main() {
    string str;
    cin >> str;
 
    for (char a = 'a'; a <= 'z'; a++) {
        cout << count(str.begin(), str.end(), a) << " ";
    }
 
    cout << endl;
    return 0;
}
cs