본문 바로가기

성우리뷰

2021 카카오)순위 검색

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> db[3][2][2][2];

vector<int> split(string str) {
    vector<int> v;
    char c;
    string tmp;
    int n;
    for(char c : str) {
        if(c == ' ') {
           if(tmp == "cpp" || tmp == "backend" || tmp == "junior" ||
             tmp == "chicken") {
                n=0;
            }
            else if(tmp == "python") {
                n=2;
            }
            else {
                n=1;
            }
            tmp = "";
            v.push_back(n);
        }
        else {
            tmp.push_back(c);
        }
    } 
    v.push_back(stoi(tmp));
    return v;
}

int check(string str) {
    int ret=0;
    vector<int> v;
    char c; string tmp;
    for(char c:str) {
        if(c == ' ') {
            if(tmp == "-") {
                v.push_back(-1);
            }
            else if(tmp == "cpp" || tmp == "backend" || tmp == "junior" ||
             tmp == "chicken") {
                v.push_back(0);
            }
            else if(tmp == "python") {
                v.push_back(2);
            }
            else if(tmp == "and") {
                tmp = "";
                continue;
            }
            else {
                v.push_back(1);
            }
            tmp = "";
        }
        else {
            tmp.push_back(c);
        }
    }
    v.push_back(stoi(tmp));

    //int i = v[0]==-1? 0:v[0]; int j = v[1]==-1? 0:v[1];
    //int k = v[2]==-1? 0:v[2]; int l = v[3]==-1? 0:v[3];
    int n1 = v[0]==-1? 2:v[0]; int n2 = v[1]==-1? 1:v[1];
    int n3 = v[2]==-1? 1:v[2]; int n4 = v[3]==-1? 1:v[3];
 //   printf("1. %d %d %d %d & %d %d %d %d\n", n1, n2, n3, n4, v[0], v[1], v[2], v[3]);

    for(int i = v[0]==-1? 0:v[0]; i<=n1; i++) {
        for(int j = v[1]==-1? 0:v[1]; j<=n2; j++) {
            for(int k = v[2]==-1? 0:v[2]; k<=n3; k++) {
                for(int l = v[3]==-1? 0:v[3]; l<=n4; l++) {
                    for(int m=0; m<db[i][j][k][l].size(); m++) {
                        if(db[i][j][k][l][m] >= v[4]) {
                            ret++;
                    //        printf("%d %d %d %d %d & %d %d %d %d %d\n", i, j, k, l,
                    //        m, n1, n2, n3, n4, db[i][j][k][l].size());
                    //        printf("%d %d\n", db[i][j][k][l][m], v[4]);
                        }
                    //     printf("2. %d %d %d %d %d & %d %d %d %d %d\n", i, j, k, l,
                     //    m, n1, n2, n3, n4, db[i][j][k][l].size());
                    }
               //     ret = n1;
                }
            }
        }
    }
    return ret;
}

vector<int> solution(vector<string> info, vector<string> query) {
    vector<int> answer;
    string str;

    for(string& str : info) {
        vector<int> v = split(str);
        db[v[0]][v[1]][v[2]][v[3]].push_back(v[4]);
    }

    int n;
    for(string& str :query) {
        answer.push_back(check(str));
    }

    return answer;
}

'성우리뷰' 카테고리의 다른 글

임시 공부용  (1) 2021.05.24
sw 문제 모의 역량테스트) 보물상자 비밀번호  (0) 2021.05.13
2021) 카카오 - 메뉴 리뉴얼  (2) 2021.05.02
.  (0) 2021.01.05
우선순위큐 공부  (2) 2021.01.05