안녕하세요. 오늘은 머신코드를 짤 거예요.

문제

https://www.acmicpc.net/problem/2929

아이디어

대문자를 포함해서 그 대문자와 그 대문자 뒤에 있는 소문자들의 개수의 합이 4의 배수가 되도록 만들어주어야합니다. x=(그 대문자와 그 대문자 뒤에 있는 소문자들의 개수의 합)이라고 하면 ans+=(4-x%4)%4를 해주면 됩니다. 이때 맨 마지막에도 이 값을 더해주어야한다고 생각할 수 있는데 총 길이가 4의 배수일 필요는 없습니다.

소스코드

#include <iostream>
#include <string>
#define ll long long
using namespace std;

bool BIG(char c)
{
    if ('A' <= c && c <= 'Z') return true;
    return false;
}

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    string s;
    ll len, i, cnt = 0, ans = 0;

    cin >> s; len = s.length();
    for (i = 0; i < len; i++)
    {
        if (BIG(s[i]))
        {
            ans += (4 - cnt % 4) % 4;
            cnt = 0;
        }
        cnt++;
    }
    cout << ans;
}


감사합니다.

0개의 댓글