본문 바로가기

코테

[Codility] GenomicRangeQuery C++

반응형
// you can use includes, for example:
// #include <algorithm>
#include <map>

// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;

vector<int> solution(string &S, vector<int> &P, vector<int> &Q) {
    // write your code in C++14 (g++ 6.2.0)
    int arr[4][100001]={0,};
    map<char,int> m;
    m['A'] = 0;
    m['C'] = 1;
    m['T'] = 3;
    m['G'] = 2;
    int a=0,c=0,g=0,t=0;
    vector<int> v;
    for(int i=0; i<S.size(); i++){
       if(S[i]=='A'){
           a++;
       }
       if(S[i]=='C'){
           c++;
       }
       if(S[i]=='G'){
           g++;
       }
       if(S[i]=='T'){
           t++;
       }
       arr[0][i+1]=a;
       arr[1][i+1]=c;
       arr[2][i+1]=g; 
       arr[3][i+1]=t;
    }
    for(int i=0; i<P.size(); i++){
        for(int j=0; j<4; j++){
            if(P[i]==Q[i]){
                v.push_back(m[S[P[i]]]+1);
                break;
            }
            if(arr[j][P[i]]<arr[j][Q[i]+1]){
                v.push_back(j+1);
                break;
            }
        }
    }
    return v;
}
반응형

'코테' 카테고리의 다른 글

[Codility] Distinct C++  (0) 2021.12.29
[Codility] MinAvgTwoSlice C++  (0) 2021.12.29
[Codility] CountDiv C++  (0) 2021.12.29
[Codility] PassingCars C++  (0) 2021.12.29
[Codility] PassingCars C++  (0) 2021.12.29