본문 바로가기

Algorithm/PS

[1일 1알고] S4 27466 그래서 대회 이름 뭐로 하죠

개요

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