
개요
https://www.acmicpc.net/problem/27466
간단한 문자열 가공 문제입니다.
마지막 문자는 모음이 아니며 마지막에서 두 번째 ,세 번째 글자는 A인 문자열을 만들어야합니다.
조건에 맞게 가공 후 조건에 맞는다면 YES와 가공 문자열을, 아니라면 NO를 출력합니다.
의식의 흐름대로 코드를 만들어 인덱스가 헷갈리게 되었는데 직접 하시면 더 깔끔하게 코드를 만들 수 있을 것으로 보입니다.
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, M;
cin >> N >> M;
string S;
cin >> S;
int len = N;
int temp = N-1;
reverse(S.begin(), S.end());
ostringstream oss;
for (int i = 0; i < N; ++i)
{
--len;
if (S[i] != 'A' && S[i] != 'E' && S[i] != 'I' && S[i] != 'O' && S[i] != 'U')
{
temp = i+1;
oss << S[i];
break;
}
}
int astack = 0;
for (int i = temp; i < N; ++i)
{
--len;
if (S[i] == 'A')
{
++astack;
oss << S[i];
if (astack == 2)
{
temp = i+1;
break;
}
}
}
bool flag = false;
if (astack == 2 && len >= M - 3)
{
flag = true;
for (int i = 0; i < M - 3; ++i)
{
oss << S[temp + i];
}
}
string result = oss.str();
reverse(result.begin(), result.end());
if (flag)
{
cout << "YES\n" << result;
}
else
{
cout << "NO";
}
return 0;
}'Algorithm > PS' 카테고리의 다른 글
| [1일 1알고] S4 10656 십자말풀이 (0) | 2026.03.27 |
|---|---|
| [1일 1알고] G5 2011 암호코드 (0) | 2026.03.26 |
| [1일 1알고] G4 16169 수행 시간 (0) | 2026.03.24 |
| [1일 1알고] 23352 방탈출 (0) | 2026.03.22 |
| [1일 1알고] 32574 손이 닿는 범위 (0) | 2026.03.21 |