ABC167-A Registration
Atcoder のABC問題を毎日解いていきます。
簡単なものだけでいい気がするので、A~Cくらいの難易度の問題を少しずつ解いていこうと思います。
今回は「ABC167-A Registration」をCとPythonで解いたものを載せますが勝手がわからんのでこれがいい感じのコードなのかもわかりません。
まァ、解けたのでヨシ!!!!
問題:
高橋君はとあるWebサービスに会員登録しようとしています。
まずIDをSとして登録しようとしました。しかし、このIDは既に他のユーザーによって使用されていました。
そこで、高橋君は S の末尾に 1 文字追加した文字列をIDとして登録することを考えました。
高橋君は新しくIDを T として登録しようとしています。これが前述の条件を満たすか判定してください。
どう解くか...
シンプルにSとTの文字を頭から比較していきます。
まずはS>T。また、Sの全ての文字列はTの頭の文字から一致するはずなので、一致しなかった場合にはNoを返すようにif文を書く。
また、Tの文字数がSの文字数+1でなかった場合にも題意を満たさないのでそれについてもif文で処理。それ以外はYesになるはずです。
これ、日本語で説明するのが難しすぎるね.....
Cのコード:
#include <stdio.h> int main (void){ int i; char S[20], T[20]; scanf("%s%s", S, T); for(i=0;S[i]!='\0';i++){ if(S[i]!=T[i]){ printf("No\n"); return 0; } } if(T[i+1]!='\0'){ printf("No\n"); }else printf("Yes\n"); return 0; }
なぜかシンタックスハイライトがされない......nannde......
Pythonのコード:
S = input() T = input() if T[:-1] == S: print('Yes') else: print('No')
これ、PythonだとTの文字数がS+1であることについて言及しなくてもACしてしまったんですけど、何故なのでしょうか......
おそらく、Cのコードで無駄な処理をしているのでしょうが、Pythonのことシンプルさを実感してしまうともうやっていられませんね((