Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 357 B - Uppercase and Lowercase | 茶コーダーが解くAtCoder

atcoder.jp


実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 26

問題概要

英大文字と英小文字からなる長さが奇数の文字列  S が与えられる。 S に含まれる大文字の個数が小文字の個数よりも多ければ、  S に含まれる全ての小文字を大文字に変換せよ。そうでない場合は、  S に含まれる全ての大文字を小文字に変換せよ。

制約

  •  S の長さは  1 以上  99 以下。

考察

問題文の指示通りにやるだけ。 C++ では、英字が大文字であるか小文字であるかはisupper(), islower()が、大文字への変換はtoupper()、小文字への変換はtolower()を用いればよい。

コード

#include <bits/stdc++.h>
using namespace std;

#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)

// ======================================== //

int main()
{
    string S;
    cin >> S;

    int upper = 0, lower = 0;
    rep(i, 0, S.size())
    {
        if (isupper(S[i]))
            upper++;
        else
            lower++;
    }

    if (upper > lower)
    {
        rep(i, 0, S.size())
            S[i] = toupper(S[i]);
    }
    else
    {
        rep(i, 0, S.size())
            S[i] = tolower(S[i]);
    }

    cout << S << endl;
}

atcoder.jp

実装時間: 5分以内