paizaラーニングのレベルアップ問題集「データセット選択メニュー」からの出典です。
paiza.jp
C++による「データセット選択メニュー」問題集: 商品の検索と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 数値の出現率
/* paizaラーニング: C++による「データセット選択メニュー」問題集: 商品の検索 STEP: 1 数値の出現率 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ vector<int> cnt(10,0); int n; cin>>n; vector<int> a(n); for(int i=0;i<n;i++){ cin>>a[i]; cnt[a[i]]++; } for(int i=0;i<10;i++){ cout<<cnt[i]<<((i==9) ? "\n" : " "); } return 0; }
・STEP: 2 英小文字の出現率
/* paizaラーニング: C++による「データセット選択メニュー」問題集: 商品の検索 STEP: 2 英小文字の出現率 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ vector<int> cnt(26,0); int n; string s; cin>>n>>s; for(int i=0;i<n;i++){ cnt[s[i]-97]++; } for(int i=0;i<26;i++){ cout<<cnt[i]<<((i==25) ? "\n" : " "); } return 0; }
・STEP: 3 文字列の出現率
/* paizaラーニング: C++による「データセット選択メニュー」問題集: 商品の検索 STEP: 3 文字列の出現率 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; vector<string> s(n); vector<string> t; for(int i=0;i<n;i++){ cin>>s[i]; t.push_back(s[i]); } sort(s.begin(),s.end()); sort(t.begin(),t.end()); t.erase(unique(t.begin(),t.end()),t.end()); vector<int> v(t.size()-0,0); for(int i=0;i<n;i++){ for(int j=0;j<t.size()-0;j++){ if(s[i]==t[j]){ v[j]++; } } } for(int i=0;i<t.size()-0;i++){ cout<<t[i]<<" "<<v[i]<<endl; } return 0; }
・STEP: 4 価格の算出
/* paizaラーニング: C++による「データセット選択メニュー」問題集: 商品の検索 STEP: 4 価格の算出 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<pair<string,int>> ab(n); vector<string> s(m); for(int i=0;i<n;i++){ string a; int b; cin>>a>>b; ab[i].first=a; ab[i].second=b; } for(int i=0;i<m;i++){ cin>>s[i]; bool tf=false; for(int j=0;j<n;j++){ if(s[i]==ab[j].first){ cout<<ab[j].second<<endl; tf=true; } } if(tf==false){ cout<<-1<<endl; } } return 0; }
・FINAL問題: 商品の検索
/* paizaラーニング: C++による「データセット選択メニュー」問題集: 商品の検索 FINAL問題: 商品の検索 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,q; cin>>n>>q; vector<string> s(n),t(q); for(int i=0;i<n;i++){ cin>>s[i]; } for(int i=0;i<q;i++){ cin>>t[i]; } for(int i=0;i<q;i++){ bool tf=false; for(int j=0;j<n;j++){ if(t[i]==s[j]){ cout<<j+1<<endl; tf=true; break; } } if(tf==false){ cout<<-1<<endl; } } return 0; }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。