728x90
반응형
슬라이딩 윈도우 문제
#include<iostream>
#include<vector>
#include<map>
using namespace std;
bool find(map<char,int>m,vector<int>num){
if(m['A']<num[0])return false;
if(m['C']<num[1])return false;
if(m['G']<num[2])return false;
if(m['T']<num[3])return false;
return true;
}
int main(){
int s,p;
cin>>s>>p;
string t;
cin>>t;
vector<int>num(4);
//A,C,G,T
for(int i=0;i<4;i++){
cin>>num[i];
}
int left=0;
int right=left+p-1;
map<char,int>m;
//초기값
for(int i=left;i<=right;i++){
m[t[i]]++;
}
int cnt=0;
while(1){
if(find(m,num)){
cnt++;
}
m[t[left]]--;
left++;
right++;
if(right>=s)break;
m[t[right]]++;
}
cout<<cnt;
}
728x90
반응형
'하루 1문제 챌린지 > Silver2' 카테고리의 다른 글
백준 10971번 외판원순회2 (C++) 🚩 (0) | 2024.03.01 |
---|---|
백준 18111번 마인크래프트 (C++) 🚩 (1) | 2024.02.18 |
백준 3085 사탕게임 C++ (0) | 2024.01.31 |