寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

paizaラーニング: C++による「データセット選択メニュー」問題集: 商品の検索

paizaラーニングのレベルアップ問題集「データセット選択メニュー」からの出典です。
paiza.jp
C++による「データセット選択メニュー」問題集: 商品の検索と、それらの提出コードの解答例です。

僕が作成、提出したコードは、以下のとおりです。

・STEP: 1 数値の出現率

paiza.jp

/*
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.jp

/*
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.jp

/*
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.jp

/*
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.jp

/*
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ラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。