AtCoder が提供しているABC(AtCoder Beginner Contest)292 のA問題をC++とPythonで解いてみました。ABC292は、2023年3月4日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 CAPS LOCK(Difficulty : 7)
問題はリンク先をご覧ください。
与えられた英字小文字の文字列を大文字に変換する問題です。AtCoder Problems による Difficulty は 7 でした。
解答案
問題を以下の方針で解きます。
- 文字列 S を読み込む。
- 文字列 S の先頭文字から以下を繰り返す。
- 取り出した文字を大文字に変換して出力する。
C++ プログラム例(ABC292A)
与えられた文字を英字大文字に変換する標準ライブラリ関数 toupper を使います。この関数は、標準ライブラリの仕様で int を返すため、char にキャストして出力する必要があります(10行目)。キャストしないと、文字コードの整数を出力します。
以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
for (int i = 0; i < s.length(); ++i) {
cout << (char)toupper(s[i]);
}
cout << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC292A)
Python は、文字列を大文字に変換するメソッド upper が用意されているため、1行で書けます。最初、メソッドを toupper と書いて、Python に注意されました。
"""AtCoder Beginner Contest 292 A"""
print(input().upper())
こちらも「AC」と判定されました。
最後に
文字列の小文字と大文字を取り扱う問題は、ある頻度で出題されています。プログラミング言語が用意している関数、メソッドを使うと、すっきりと書くことができます。
引き続き ABC の問題を紹介していきます。