python 競技プログラミング

【全8パターン解説】5分で分かる競プロで使うpythonの標準入力

競技プログラミングをはじめるたいけど、標準入力なんて使ったことない人向けの記事を書きます。

pythonなら全部で\(8\)パターンの標準入力を覚えてしまえば競プロが楽しめます。

たびすけ
すぐに分かります!

標準入力

競技プログラミングは問題のテストケースが標準入力で与えられます。

問題が分かっても、標準入力ができないと問題に答えることができないのです。

しかし、標準入力は実務で使うことも少なく「競プロで初めて使った」という人も珍しくありません。

そのため、競技プログラミングをはじめる一番最初のハードルになることが多いのです。

たびすけ
実務ではあまり使いません!

pythonなら全8パターンだけ覚えればOK

pythonの標準入力は簡単なので、全\(8\)パターンだけ覚えてしまいましょう!

\(8\)パターンだけ覚えてしまえば競技プログラミングが楽しめます。

1行に1つの値の入力

文字列

a

\(1\)つだけ文字列を読み込む場合はinput()を使います。

変数sに入力した文字列を代入するコードは次の通ります。

s = input()

数値

1

\(1\)つだけ数値を読み込む場合にはint(input())を使います。

文字列の入力コードの前にint()を付けるだけですね

変数nに文字列を入力コードは次の通ります。

n = int(input())

1行に複数の値の入力

文字列

a b c d

\(1\)行に複数の文字列がある場合はlist(map(str, input()))を使います。

変数sに入力した文字列を代入するコードは次の通りで、sは文字列型の配列になります。

s = list(map(str, input()))

配列ではなく各変数に入力したい場合には次のようにして、入力される文字列と同じ数の変数を用意します。

s, t, u, v = list(map(str, input()))

数値

1 2 3 4

\(1\)行に複数の数値がある場合はlist(map(int, input()))を使います。

文字列の入力ではstrを使っていましたが、数値の場合にはintを使います。

変数nに入力した文字列を代入するコードは次の通りで、nは数値型の配列になります。

s = list(map(int, input()))

配列ではなく各変数に入力したい場合には次のようにして、入力される数値と同じ数の変数を用意します。

n, o, p, q = list(map(str, input()))

1つの値が複数行の入力

文字列

a
b
c
d

\(1\)つの文字列が複数行の場合は[input() for _ in range(m)]と記述します。

変数mは読み込む行数です。

例では\(4\)行なので次のようになります。

s = [input() for _ in range(4)]

sは文字列型の配列になります。

数値

1
2
3
4

\(1\)つの数値が複数行の場合は[int(input()) for _ in range(m)]を使います。

変数mは読み込む行数です。

例では\(4\)行なので次のようになります。

n = [int(input()) for _ in range(4)]

nは数値型の配列になります。

1行の入力が複数行

文字列

a b c d
e f g h
i j k l

\(1\)行に複数の文字列がある場合は[list(map(str, input())) for _ in range(m)]を使います。

変数mは読み込む行数です。

例では\(4\)行なので次のようになります。

s = [list(map(str, input())) for _ in range(4)]

sは文字列型の二次元配列配列になります。

数値

1 2 3 4
5 6 7 8
9 10 11 12

\(1\)行に複数の文字列がある場合は[list(map(int, input())) for _ in range(m)]を使います。
変数mは読み込む行数です。

例では\(4\)行なので次のようになります。

n = [list(map(int, input())) for _ in range(4)]

nは数値型の二次元配列配列になります。

pythonの標準入力まとめ

標準入力まとめ

  • input()
  • int(input())
  • list(map(str, input()))
  • list(map(int, input()))
  • [input() for _ in range(m)]
  • [int(input()) for _ in range(m)]
  • [list(map(str, input())) for _ in range(m)]
  • [list(map(int, input())) for _ in range(m)]

たびすけ
全\(8\)パターン覚えましょう!

標準入力の高速化

とても簡単なpythonの標準入力ですが、残念なことに処理速度が遅いです。

行数が多い入力を行う場合には高速化する必要があります。

簡単な問題では入力行数が多い問題は少ないので、C問題くらいまで解けるようになったら高速化しましょう。

たびすけ
pythonの標準入力はとても簡単なので競プロ初心者向きです!

プログラミング

-python, 競技プログラミング