Python3で競技プログラミングする時の標準入力のまとめ

Python3での標準入力のまとめです。

競技プログラミングなどで使えるメモ書きの意味も込めてです。

スポンサーリンク

基本はinput()

標準入力はinput関数を用います。input()は入力された文字を文字列で扱うので、数字を扱う場合は型変換が必要です。

標準入力のまとめ

S (文字列)

入力

\(S\)

コード

S = input()

 

または、型を明確にするために

S = str(input())

と書くこともできます。

x (整数)

入力

\(x\)

コード

x = int(input())

f (小数)

入力

\(f\)

コード

f = float(input())

x y (一列に複数の入力)

入力

\(x \quad y\)

コード(x, yが整数の場合)

x, y = map(int, input().split())

 

もし入力が複数の文字列

\(i \quad j \quad k \)

の場合、

i, j, k = map(str, input().split())

とすれば良い。

入力が小数の時は、int、strだった部分をfloatにする。

A1, A2, …, An(横一列の配列)

入力

\( A_1, A_2, \dots , A_{n} \)

コード(Aiが整数の場合)

A = [int(i) for i in input().split()]

 

Aiが文字列の場合はint(i)の部分をstr(i)にするか、iにすればよいです。

コード(Aiが文字列の場合)

A = [str(i) for i in input().split()]
A = [i for i in input().split()]

 

コード上では、配列AはA[0], A[1], …, A[n-1]なので注意が必要です。

B1, B2, …, Bn (縦一列の配列)

入力

\( B_1 \\ B_2 \\ \vdots \\ B_n \)

コード(Biが整数の場合)

B = [int(input()) for i in range(n)]

 

例えば、入力が

\( N \\ B_0 \\ B_1 \\ \vdots \\ B_{N-1} \)

の場合は、コードは

N = int(input())
B = [int(input()) for i in range(N)]

となります。

Biが文字列の場合はint(input())をstr(input())かinput()に、小数の場合はfloat(input())にします。

2次元配列の入力

入力

\( x_1 \quad y_1 \quad z_1 \\ \vdots \\ x_N \quad y_N \quad z_N \)

コード

data = [list(map(int, input().split())) for _ in range(N)]

ここでは、

data[0] == [x1, y1, z1]

となります。

 

複数の問題を解く場合などでこの形式が与えられた場合には、

for i in range(N):
    x, y, z = map(int, input().split())

    # 何かの処理

とすることも多いです。

  

入力が以下のような場合も同じコードが使えます。

入力

\( x_{0,0} \quad x_{0,1} \dots x_{0, K-1} \\ \vdots \quad \ddots \\ x_{N-1,0} \quad x_{N-1,1} \dots x_{N-1, K-1} \)

コード

data = [list(map(int, input().split())) for _ in range(N)]

まとめ

これらを組み合わせた入力の場合には、コードを順番に書くことで順番に処理していきます。

例えば入力が

\( S \\ N \quad x \quad y \quad z \\ B_1 \\ B_2 \\ \vdots \\ B_N \)

の場合(ただし、Sは文字列で、それ以外が整数)は、コードは

S = input()
N, x, y, z = map(int, input().split())
B = [int(input(i) for i in range(N)]

と書けば良いです。

これまでに書いた標準入力が扱えれば、競技プログラミングでの標準入力は大体問題なく出来るはずです。