この記事は拙著「AtCoder 凡人が『緑』になるための精選50問詳細解説」のサンプルです
価格:100円
kindle:https://www.amazon.co.jp/dp/B09C3TPQYV
booth(pdf):https://sano192.booth.pm/items/3179185
次:https://qiita.com/sano192/items/467939ec8336d0bec380
【目標】
・入力と出力のやり方を身につける
【概要】
典型的なA問題。ひねった部分はないので、入力と出力のやり方がわかれば解くことができる。
【方針】
入力を受け取り、条件を判定する。
pythonで入力を受け取る方法は以下の5つ。
(1)数字が1つ
入力例:N
N=int(input())
(2)数字が2つ以上で別々に受け取り
入力例:A B
A,B=map(int, input().split())
(3)文字列が1つ
入力例:S
S=input()
(4)文字列が2つ以上で別々に受け取り
入力例:S T
S,T=map(str, input().split())
(5)リストで受け取り
入力例:A1 A2 … An
A=list(map(int, input().split()))
上記の5つを使えれば入力の受け取りに困ることはない。この5つはいつでもコピペできるようにしておこう。
他にもやり方はいくつもあり、「競技プログラミング 入力」で検索するとどの方法が速い、遅いという意見が大量に出てくる。しかし入力の受け取りが原因でTLE(実行時間制限超過)=不正解となることはありえないので気にしなくて良い。とにかく上記の5つだけ使えるようにしよう。
この問題の場合、
A B C
のそれぞれを受け取るのでパターンとしては
(2)数字が2つ以上で別々に受け取り
にあたる。
答えの出力については以下のように書く。
print(出力したいもの)
【実装】
まず入力を受け取ろう。
A,B,C=map(int, input().split())
これでA,B,Cに入力されたそれぞれの値を受け取ることができた。
あとは問題文の条件を満たしているか?判定して出力するだけだ。
つまりA^2+B^2<C^2となっているか?を判定する。
これはif文で記載すれば良い。
pythonの場合Aの2乗はA^2ではなくA**2と書くことに注意しよう。
if A**2+B**2<C**2:
else:
if、elseの中に処理内容を記載する。
・ifは条件を満たしている場合
・elseは条件を満たしていない場合
この問題の場合、条件を満たしていれば”Yes”、そうでなければ”No”を出力する。
出力の方法は
print(出力したいもの)
だったことを思い出そう。
提出するコードは以下のようになる。
A,B,C=map(int, input().split())
if A**2+B**2<C**2:
print("Yes")
else:
print("No")
コードが書けたら合っているかどうか、「入力例」を入力して確認する。
書けたコードを実行し、
「入力例1」
2 2 4
を入力してみよう。(入力例1をコピペすればよい)
出力例1の通り、「Yes」が出力されれば成功。入力例1については正解している。
エラーが出たらコードの見直しが必要だ。よくある間違いを2つ紹介しよう。
「よくある間違い1」
A,B,C=map(int, input().split())
if A**2+B**2<C**2:
print("Yes")
else:
print("No")
エラー内容は
IndentationError: expected an indented block
(インデントのエラー:インデントされたブロックが必要です)
要するにインデントを下げろと言っている。pythonでifを書いた後は必ずインデントを下げなければならない。printの前にカーソルを合わせ、Tabキーを押してインデントを下げよう。
「よくある間違い2」
A,B,C=map(int, input().split())
if A**2+B**2<C**2:
print(Yes)
else:
print(No)
エラー内容は
NameError: name 'Yes' is not defined
(名前のエラー:名前 “Yes” が定義されていません)
Yes,Noにダブルクオーテーション(“”)が入っていないとエラーになる。
文字を出力するときはpythonに「これは文字だよ」と教えてあげないといけない。そのため、Yes、Noを”Yes”、"No"と書き換えよう。
入力例1を試して問題がなければ入力例2,3についても試してみる。
全ての入力例について出力結果が出力例と合致したら提出だ。
問題ページ下部にある出力フォームにコードをコピペし、言語「python」を選択して「提出」しよう。
【コード全文】
A,B,C=map(int, input().split())
if A**2+B**2<C**2:
print("Yes")
else:
print("No")
この記事は拙著「AtCoder 凡人が『緑』になるための精選50問詳細解説」のサンプルです
価格:100円
kindle:https://www.amazon.co.jp/dp/B09C3TPQYV
booth(pdf):https://sano192.booth.pm/items/3179185