yutasの競技プログラミング勉強帖

競技プログラミングの問題についての解説記事を主に書いています。

A - 202<s>3</s> / AtCoder Beginner Contest 335(Sponsored by Mynavi)

問題

英小文字と数字からなる文字列  s が入力される。  s2023 で終わることが保証される。

このとき、  s の最後の文字を 4 に変更し、変更後の文字列を出力せよ。

入力

1行に、文字列  s が与えられる。

条件

  • 実行時間制限: 2s
  • メモリ制限: 1024MB
  •  4 \leq |s| \leq 100
  •  s は英小文字と数字からなり、 2023 で終わる文字列である。

出力

答えを1行で出力すること。

解法

この問題は、文字列  s の最後の文字を 4 に変更する問題です。

文字列  s の長さを  n とすると、例えばC++での std::string では 0-index であることから、 \begin{align} s = {s}_{0} \, {s}_{1} \, {s}_{2} \, \cdots \, {s}_{n - 1} \end{align} として管理されています。

従って、与えられた  s に対して、  {s}_{n - 1} = '4' として更新し、更新後の  s を出力することで、この問題は解くことができます。

ソースコード

main() 関数の中に、答えを出力する部分を直接実装しました。

int main() {
  string s;
  cin >> s; // 値の入力

  int n = s.length(); // s.length() で s の長さを取ることができる
  s[n - 1] = '4'; // s[n - 1] を '4' に更新する(このとき、 s[i] が char 型であることに注意する)
  cout << s << endl; // 更新された s を出力する

  return 0;
}