https://codeforces.com/contest/1547/problem/B
[난이도] Div.3
[유형] Greedy
[풀이]
'a'의 index를 찾고 왼쪽 index l 오른쪽 index r을 유지하면서
'b','c','d'..가 순서대로 l,r 둘중 하나에 존재하는지를 체크해줍니다.
만약 지금 나와야하는 알파벳이 l,r 둘중 하나에 없다면 NO를 출력해주고,
모든 알파벳을 찾을 수 있다면 YES를 출력합니다.
#include <cstdio>
#include <queue>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
int tc;
string s;
bool solve(){
int cur=-1;
for(int i=0;i<s.size();i++){
if(s[i]=='a') {
cur=i;
break;
}
}
if(cur==-1) return false;
int l=cur,r=cur;
int sz = s.size()-1;
char target='b';
while(sz--){
if(l-1>=0){
if(s[l-1]==target){
l--;
target++;
continue;
}
}
if(r+1<s.size()){
if(s[r+1]==target){
r++;
target++;
continue;
}
}
return false;
}
return true;
}
int main(){
scanf("%d",&tc);
while(tc--){
cin >> s;
string ret = solve()?"YES":"NO";
cout << ret << '\n';
}
}
https://github.com/has2/Problem-Solving/blob/master/codeforces/Round731-Div.3/B.cpp
'Problem-Solving > Codeforces' 카테고리의 다른 글
[Codeforces][Round #732][Div.2] A : AquaMoon and Two Arrays (C++) (0) | 2021.07.18 |
---|---|
[Codeforces][Round #731][Div.3] C : Pair Programming (C++) (0) | 2021.07.18 |
[Codeforces][Round #731][Div.3] A : Shortest Path with Obstacle (C++) (0) | 2021.07.18 |
[Codeforces][Round #EDU109][Div.2] B : Permutation Sort (C++) (0) | 2021.05.18 |
[Codeforces][Round #EDU109][Div.2] A : Potion-making (C++) (0) | 2021.05.18 |