AtCoder Beginner Contest 091 A問題
A: Two Coins - AtCoder Beginner Contest 091 | AtCoder
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「split()」です。
split()で文字列の分割
A,B,C= map(int,input().split()) print(['No','Yes'][A+B>=C])
入力はスペース区切りで3文字入力されます。そのため、それらを分割するためにはスペースが区切り文字であることを教える必要があります。
今回、split()と引数未入力でスペースの場合は大丈夫です。
区切り文字が「,」の場合は「split(",")」というように指定してあげれば、それを区切り文字と判断し、分割することができます。
コードの改善
競技プログラミングのコードですので何よりもはやさが求められます。
今回、Pythonでは上記のコードが最速だと思いますので、他の言語もチェックします。
$0=$1+$2<$3?"No":"Yes"
言語 得点 ソースコード長 状態 実行時間 メモリ使用量
Awk (mawk 1.3.3) 100 32 Byte AC 1 ms 256 KB
Python3 (3.4.3) 100 60 Byte AC 17 ms 2940 KB
圧倒的な違いがあります。まずAWKとは。。?
AWK(オーク)は、プログラミング言語の一つ。 テキストファイル、特に空白類(スペースの他、タブなど)やカンマなどで区切られたデータファイルの処理を念頭に置いた仕様となっているが、一般的なプログラミングに用いることも可能である。 UNIX 上で開発された。
AWK - Wikipedia
このブログではPythonに特化していきますが、たまには他の言語とも比較してみます。
参考:
AWKプログラミングの真髄の1つ フィールド(列)を操る基礎テクニック (1/2):CodeZine(コードジン)
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る