Python
AtCoder
python3
競技プログラミング

競技プログラミングを Python 3 で解く

はじめに

競プロを始めて日が浅い私ですが, よく使うフレーズをまとめたチートシートを作成しました.
いくつか同様の記事はあったのですが, 網羅できていなかったので自分用にメモを作る感覚で作りました.
Python 自体触り始めてあまり時間が経っていないので, 不備や改善点があったら教えていただけると幸いです.

※動作環境は Python 3.6.5, Windows 10 です.

チートシート

標準入力

1行から入力

文字

>> ABC
input.py
S = input()
print(S) # ABC
>> ABC
input.py
S = list(input())
print(S) # ['A', 'B', 'C']
>> A B C
input.py
S = input().split()
print(S) # ['A', 'B', 'C']

数字

>> 1
input.py
N = int(input())
print(N) # 1
>> 1 2 3
input.py
A, B, C = map(int, input().split())
print(A) # 1
>> 1 2 3
input.py
L = [int(i) for i in input().split()]
print(L) # [1, 2, 3]
>> 1 2 3 (上と同じ)
input.py
L = list(map(int, input().split()))
print(L) # [1, 2, 3]

複数行から入力

文字

1次元
input.txt
3
ABC
DEF
GHI
input.py
N = int(input())
S = [input() for i in range(N)]
print(S) # ['ABC', 'DEF', 'GHI']
2次元
input.txt
3 3
ABC
DEF
GHU
input.py
H, W = map(int, input().split())
S = []
for i in range(H):
    S.append(list(input()))
print(S) # [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
input.txt
3 3
A B C
D E F
G H I
input.py
H, W = map(int, input().split())
A = [input().split() for i in range(W)]
print(A) # [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

数字

1次元
input.txt
3
123
456
789
input.py
N = int(input())
A = [int(input()) for i in range(N)]
print(A) # [123, 456, 789]
2次元
input.txt
3 3
1 2 3
4 5 6
7 8 9
input.py
H, W = map(int, input().split())
A = [list(map(int, input().split())) for i in range(W)]
print(A) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

その他の関数

素数判定

primeJudge.py
def primeJudge(p):
    p = abs(p)
    if p == 2:
        return True
    if p < 2 or p & 1 == 0:
        return False
    return pow(2, p-1, p) == 1

素数判定をします.
素数なら True, 素数でないなら False を返します.

http://d.hatena.ne.jp/pashango_p/20090704/1246692091

更新

新しいフレーズに出会ったら随時更新していきます.
2018/05/11 16:40 文字の2次元配列の入力コードを変更しました.