こんにちは, Shinoryoです.
今回はC++入門 AtCoder Programming Guide for beginners(APG4b)を, Pythonで無理やり解いてみた結果を書き連ねていこうと思います.
C++入門 AtCoder Programming Guide for beginners (APG4b) - AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
目次[非表示]
EX11 - 電卓をつくろう2
計算の回数が分かっているので, for文で計算をループさせます. 「1:4」のような計算結果の出力には, 複数の変数を文字列に埋め込んで出力する方法である文字列メソッドformat()を用いて記述するとよいでしょう. 除算の際の
n = int(input()) | |
a = int(input()) | |
for i in range(n): | |
op, b = input().split() | |
b = int(b) | |
if op == "+": | |
a += b | |
print("{0}:{1}".format(i+1,a)) | |
elif op == "-": | |
a -= b | |
print("{0}:{1}".format(i+1,a)) | |
elif op == "*": | |
a *= b | |
print("{0}:{1}".format(i+1,a)) | |
else: | |
if b == 0: | |
print("error") | |
break | |
a = int(a/b) | |
print("{0}:{1}".format(i+1,a)) |
EX12 - 足したり引いたり
文字列sの長さを取得するには, len()を用います. 下の例では, 例えば文字列sの長さが
s = input() | |
ans = 1 | |
for i in range(int(len(s)/2)): | |
if s[2*i+1] == "+": | |
ans += 1 | |
else: | |
ans -= 1 | |
print(ans) |
EX13 - 平均との差
当初は平均取得の際にNumPyを用いていましたが, 実行時間・メモリともに増加したのでやめました. a = [int(x) for x in input().split()]の部分で入力された整数で構成されたリストを作成し(リスト内包表記; 以前の問題でも使っていました), その後はsum()でリストの合計を出した後に
n = int(input()) | |
a = [int(x) for x in input().split()] | |
ave = int(sum(a) / n) | |
for i in range(n): | |
print(abs(a[i] - ave)) |
EX14 - 三人兄弟の身長差
EX13のときと同じように入力を受け付けた後で, sorted()を用いてリストをソートしています. その後で,
a, b, c = sorted([int(x) for x in input().split()]) | |
print(c-a) |
EX15 - 三人兄弟へのプレゼント
問題にあるプログラムをPythonで記述すると, 次のようになるでしょうか. Pythonでは, 関数はdefで定義され, 戻り値はreturnで指定されます. また, sum()とinput()は定義済みであるため, 関数の名前を変えてみます.
def defsum(scores): | |
# The program should be written | |
def defoutput(sum_a, sum_b, sum_c): | |
# The program should be written | |
def definput(n): | |
vec = [int(x) for x in input().split()] | |
return vec | |
n = int(input()) | |
a = definput(n) | |
b = definput(n) | |
c = definput(n) | |
sum_a = defsum(a) | |
sum_b = defsum(a) | |
sum_c = defsum(a) | |
output(sum_a, sum_b, sum_c) |
Pythonで問題になっている関数を書くと, 以下のようになると思います. Pythonが便利すぎて, もはや改めて関数を定義する意味がなくなってきていますね.
def defsum(scores): | |
return sum(scores) | |
def defoutput(sum_a, sum_b, sum_c): | |
print(sum_a*sum_b*sum_c) | |
def definput(n): | |
vec = [int(x) for x in input().split()] | |
return vec | |
n = int(input()) | |
a = definput(n) | |
b = definput(n) | |
c = definput(n) | |
sum_a = defsum(a) | |
sum_b = defsum(b) | |
sum_c = defsum(c) | |
defoutput(sum_a, sum_b, sum_c) |
参考にしたサイト等
- nkmk様による「Pythonのprint関数で文字列, 数値および変数の値を出力」
Pythonのprint関数で文字列, 数値および変数の値を出力 | note.nkmk.me
Pythonで文字列や数値, 変数に格納された値などを標準出力(sys.stdout)に表示するprint()関数について説明する. 2. 組み込み関数 print() — Python 3.6.5 ドキュメント ここでは以下の内容について説明する. Python2とPython3のprintの違い 文字列や数値, リスト, 辞書などを出力整形(折り返し・省略など)して出力 整...
- nkmk様による「Pythonで文字列を抽出(位置・文字数, 正規表現)」
Pythonで文字列を抽出(位置・文字数, 正規表現) | note.nkmk.me
Pythonで文字列strから部分文字列を抽出する方法について説明する. 任意の位置・文字数を指定して抽出したり, 正規表現のパターンで抽出したりできる. 位置(文字数)を指定して抽出: インデックス, スライスインデックスで文字を抽出スライスで文字列を抽出文字数を利用日本語(全角文字)の場合 インデックスで文字を抽出...
- TechAcademy様にある記事(橋本紘希様監修)による「Pythonのsum関数の使い方を現役エンジニアが解説【初心者向け】」
Pythonのsum関数の使い方を現役エンジニアが解説【初心者向け】
初心者向けにPythonのsum関数の使い方について解説しています. sum関数は要素の数値の合計を求める関数になります. sum関数は, 他のプログラミング言語でもありますので, 基礎的なこととして覚えておきましょう.
- nkmk様による「Pythonでリストの最大値・最小値から順にn個の要素を取得」
Pythonでリストの最大値・最小値から順にn個の要素を取得 | note.nkmk.me
Pythonでリスト(配列)の最大値・最小値から順にn個の要素を取得したい場合, n=1であれば, 組み込み関数max(), min(), n>1であれば, リストをソート(並び替え)する方法と標準ライブラリのheapqモジュールを使う方法がある. 最大値・最小値を取得: max(), min() 最大値・最小値から順にn個の要素を取得: ソート 最大値・...
- nkmk様による「Pythonで関数を定義・呼び出し(def, return)」
Pythonで関数を定義・呼び出し(def, return) | note.nkmk.me
Pythonにおいて関数の定義と呼び出し(実行)を行う方法について説明する. Pythonにおける関数の定義・呼び出しの基本 引数の使い方位置引数: 位置で指定キーワード引数: キーワードで指定デフォルト引数: デフォルト値を設定, 呼び出し時に省略可能可変長引数: 任意の数の引数を指定リストや辞書を展開して指定 位置引数: ...
関連記事
AtCoder APG4bをPythonで解く(Ex1~5)
こんにちは, Shinoryoです. 今回は C++入門 AtCoder Programming Guide for beginners(APG4b) を, Pythonで無理やり解いてみた結果を書き連ねていこうと思います. C++入門 AtCoder Program...
AtCoder APG4bをPythonで解く(Ex6~10)
こんにちは, Shinoryoです. 今回は C++入門 AtCoder Programming Guide for beginners(APG4b) を, Pythonで無理やり解いてみた結果を書き連ねていこうと思います. C++入門 AtCoder Program...
AtCoder APG4bをPythonで解く(Ex16~18)
こんにちは, Shinoryoです. 今回は C++入門 AtCoder Programming Guide for beginners(APG4b) を, Pythonで無理やり解いてみた結果を書き連ねていこうと思います. C++入門 AtCoder Program...
AtCoder APG4bをPythonで解く(Ex19~21)
こんにちは, Shinoryoです. 今回は C++入門 AtCoder Programming Guide for beginners(APG4b) を, Pythonで無理やり解いてみた結果を書き連ねていこうと思います. C++入門 AtCoder Program...
AtCoder APG4bをPythonで解く(Ex22~24)
こんにちは, Shinoryoです. 今回は C++入門 AtCoder Programming Guide for beginners(APG4b) を, Pythonで無理やり解いてみた結果を書き連ねていこうと思います. C++入門 AtCoder Program...
0 件のコメント:
コメントを投稿 (Please feel free to ask me about your questions! You can use Japanese or English in the comments.)