int main() { cout <<setprecision(10); int n ; cin >> n; vector<string> S(n); rep(i,n) cin >>S[i]; int num[26]; rep(i,26) num[i] = 50 ; rep(i,n){ for(int c = 'a' ; c <= 'z' ; c++){ int count = 0; for(int j = 0 ; j <= S[i].size() ; j ++){ if(S[i][j]==c){ count ++; } } chmin(num[c-'a'],count); } } int ans = 0; rep(i,26){ char c = 'a'+i; rep(j,num[i]){ cout <<c; } } cout << endl; }
解法
aの使える個数は、S1~Snのそれぞれに入っているaの数をsa1,sa2,...sanとすると、 それの最小値
って感じなことをやっていく
sa1~sanの最小値はnum[0]に格納されている
で
あとは
a~zについて、aをnum[0]回,bをnum[1]回…出力させれば解ける