公式
A - I'm a teapot 解説
by
A - I'm a teapot 解説
by
Nyaan
初心者の方へ
- プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは practice contest の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。
- また、プログラミングコンテストの問題に慣れていない方は、 AtCoder Beginners Selection の問題をいくつか試すことをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
まず、\(S\) の長さが 3 未満である場合、答えはNo
です。
そうでない場合、次の 3 個の条件が全て成立すれば答えは Yes
、そうでなければ答えは No
です。
- \(S\) の \(N-2\) 文字目が
t
である。 - \(S\) の \(N-1\) 文字目が
e
である。 - \(S\) の \(N\) 文字目が
a
である。
よって、これらを 1 個 1 個調べていけばよいです。
注意点として、\(S\) の長さが 3 未満である場合に \(N-2\) 文字目を調べようとすると言語および状況によっては配列外参照と呼ばれる実行時エラーが発生します。(やや不正確ですが簡単に言うと、添え字がマイナスになってしまい文字列の外側を調べようとしてエラーが起きます。) そのため、文字を調べる前に長さを確認して配列外参照が発生しないように実装しましょう。
なお、別解として、C++ の substr
関数や Python のスライス機能を用いて末尾 3 文字を取り出して判定する方法もあります。
- 実装例(C++)
#include <iostream>
#include <string>
using namespace std;
int main() {
int N;
string S;
cin >> N >> S;
if (N < 3) {
cout << "No\n";
} else {
if (S[N - 3] == 't' and S[N - 2] == 'e' and S[N - 1] == 'a') {
cout << "Yes\n";
} else {
cout << "No\n";
}
}
}
投稿日時:
最終更新: