LoginSignup
40
31

More than 1 year has passed since last update.

1 入力と出力 Dif:5 ABC199 A:「AtCoder 凡人が『緑』になるための精選50問詳細解説」サンプル

Last updated at Posted at 2021-07-16

この記事は拙著「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」を選択して「提出」しよう。
image60.png

【コード全文】

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

40
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
31