문제 링크 - https://www.acmicpc.net/problem/10751
🌱 문제
🌱 풀이
- 누적합을 세는 변수는 c, co, cow이다.
- for문을 통해 string을 탐색한다.
- 'C'가 나오면 c를 1증가시킨다.
- 'O'가 나오면 co를 c만큼 증가시킨다. O가 나올때마다 CO를 만들 수 있는 경우가 c개만큼 증가하기 때문이다.
ex) 예를들어 'CCOOO'가 있으면 0,1인덱스를 지나서 c=2인 상태고 'O'가 나올때마다 CO를 만들 수 있는 경우가 c개만큼 증가하니까 co = 2+2+2 = 6 이다.
- 마찬가지로 'W'가 나오면 cow를 co만큼 증가시킨다.
ex) 'CCOOWW'면 인덱스 0,1,2,3까지 co=4이고, W일때마다 cow+=co이므로 최종 cow=8이다.
🌱 코드
//10751번: COW
#include <iostream>
#include <vector>
using namespace std;
int n;
long long c;
long long co;
long long cow;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>n;
string s;
cin>>s;
for(int i=0; i<s.size(); i++){
if(s[i]=='C')
c++;
else if(s[i]=='O')
co+=c;
else
cow+=co;
}
// cout<<"C: "<<c<<"\n";
// cout<<"O: "<<co<<"\n";
// cout<<"W: "<<cow<<"\n";
cout<<cow<<"\n";
}
// cow->1
// cwow ->1
// ccow ->2
// ccooww ->8
// coowww ->6
// ooccow-> 2
// occowoooocoww -?