競技プログラミングをはじめるたいけど、標準入力なんて使ったことない人向けの記事を書きます。
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)]
標準入力の高速化
とても簡単なpythonの標準入力ですが、残念なことに処理速度が遅いです。
行数が多い入力を行う場合には高速化する必要があります。
簡単な問題では入力行数が多い問題は少ないので、C問題くらいまで解けるようになったら高速化しましょう。
-
【python】標準入力を高速化する方法を基礎から解説
続きを見る