週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

split()で文字列の分割(AtCoder(競プロ)1日1問【21日目】【Python】)


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言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで