python 競技プログラム初級編
整数
入力を整数として受け取りたいとき。
1行に1つ
入力が 1 行に整数 1 つの場合。
n = int(input())
使用問題例: ABC145 A - Circle
1行に複数
入力が 1 行に複数ある場合。
10 20
みたいなときです。
n, m = map(int, input().split())
使用問題例: ABC144 A - 9x9
整数(リスト編)
複数の整数をリストとして受け取りたいときもあります。
1行
1 2 3 4
みたいなときです。
a = list(map(int, input().split())) # [1, 2, 3, 4] になる
使用問題例: ABC142 B - Roller Coaster
複数行に1列ずつ
1
2
3
4
みたいなときです。
a = [int(input()) for i in range(n)] # [1, 2, 3, 4] になる
n は行数です。for 文を使っても良いですが、このようにリスト内包表記を使うと楽です。
使用問題例: ABC115 B - Christmas Eve Eve
複数行に複数列ずつ
1 2 3 4
5 6 7 8
9 10 11 12
みたいなときです。
a = [list(map(int, input().split())) for i in range(n)]
# [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] になる
使用問題例: ABC133 B - Good Distance
文字列
入力を文字列として受け取りたいとき。
1行に1つ
入力が 1 行に文字列 1 つの場合。
abcde
みたいなときです。
s = input()
使用問題例: ABC146 A - Can't Wait for Holiday
1行に複数
入力が 1 行に複数ある場合。
abcd efghi
みたいなときです。
s, t = input().split()
使用問題例: ABC078 A - HEX
文字列(リスト編)
複数の文字列をリストとして受け取りたいときもあります。
1行
a b c d e
みたいなときです。
s = input().split() # ['a', 'b', 'c', 'd', 'e'] になる
こちらはあまり使う機会がないです。
1行 その2
abcde
を文字列ではなくリストとして受け取ることもできます。
s = list(input()) # ['a', 'b', 'c', 'd', 'e'] になる
使用問題例: ABC009 C - 辞書式順序ふたたび *(かなり難しいです)
複数行
....
.#..
..#.
みたいなときです。
ref