WARush

SRMの結果とか、解けた問題のコードを書いていきます

SRM565 Div2 Easy "ValueHistogram"

問題

http://community.topcoder.com/stat?c=problem_statement&pm=12275

数値の集合のヒストグラムとは数値ごとの出現頻度を視覚的に表で表したものである。
数値0~9の集合 values が与えられるので、以下のルールに従った
ヒストグラムを返せ。

1. 作成するヒストグラムの幅はちょうど10にすること
2. ヒストグラムの高さは、一番出現回数の多い数値がH回出てきたとすると、
   H+1にすること
3. 数値iの出現回数をi番目の列で 'X' を重ねて示すこと。
   それ以上は '.' で示すこと。
制約

1 <= valuesの要素数 <= 50
0 <= values[i] <= 9


考えた事

やるだけ


ソースコード

class ValueHistogram {
public:
    vector <string> build(vector <int> values){
        int counts[ 10 ];
        memset( counts, 0, sizeof(counts) );
        
        for( int i = 0; i < values.size(); i++ ){
            counts[values[i]]++;
        }

        int H = 0;
        for( int i = 0; i < 10; i++ ){
            H = max( H, counts[i] );
        }

        vector<string> res;
        for( int h = H + 1; h >= 1; h-- ){
            ostringstream oss;
            for( int i = 0; i < 10; i++ ){
                if( counts[i] >= h ){
                    oss << 'X';
                }else{
                    oss << '.';
                }
            }
            res.push_back( oss.str() );
        }
        return res;
    }
};