LoginSignup
0
0

More than 3 years have passed since last update.

競プロで入力どう受け取ればいいの (Python3編)

Last updated at Posted at 2019-06-03

これはなに

ついこないだ,競プロに初参戦してみました.
とりあえず腕試しということで,事前知識ほぼ皆無で挑んでみたのですが,入力が受け取れないのなんの.
僕がPythonどちゃくそ初心者というのもありますが,ついさっきsupercellに色々教えてもらったので,忘れないようにメモっとこうと思います.
要するに備忘録

パターンと解法

こんなタイトルの参考書,中学生くらいのときにあったな...

数値1つだけを受け取る

まずは1番シンプルなパターンから.
数値Nが与えられたとします.

N = input()

簡単ですね!

2つの数値を受け取る

2つの数値N, MN Mの形式で与えられるとします.
この場合,僕は

i = input().split()
N = int(i[0])
M = int(i[1])

みたいな感じでやってました.キモいです.
こういうときはmap()を使えば解決します.

N, M = map(int, input().split())

たったこれだけ!

複数の数値を1行で受け取る

$a_0, a_1, a_2, ..., a_n$ という数列が

a_0 a_1 a_2 ... a_n

というような形式で与えられるとします.
先ほどは受け取る個数がわかっていたのでmap()を使って対応できましたが,今度はいくつの数値を受けとるかわかりません.
こんなときはlist()を使いましょう!

a = list(map(int, input().split()))
# a[k]にはa_kが入っています

簡単!

複数の数値を1列で受け取る

$a_0, a_1, a_2, ..., a_{N-1}$ というN個の数値からなる数列が

N
a_0
a_1
a_2
.
.
.
a_(N-1)

という形式で与えられるとします.
僕の場合,いままではfor文を愚直に回して入力を受け取っていました.
ただ,内包表記を使ったほうが多少速いです.Python自体遅いので誤差程度って言ってた.

N = int(input())
a = [int(input()) for _ in range(N)]
# a[k]にはa_kが入っています

めちゃシンプル!

これらを組み合わせることで様々な入力パターンに対応することができます!

まとめ

本質ではないところで多少消耗したのでまじつらたん.

0
0
4

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
0
0