はじめに
最近AtCoderとpaizaをはじめました
やっていくうちにテンプレートのようなものがたくさんあったので,
思いつく限りを備忘録がてらまとめていきます(自称備忘録芸人).
まとめながら頭を整理させていただきます.
いいものがあれば順次更新していこう!
← をクリックするともくじにいけます.
もくじ
再帰上限数
再帰を使うときは念のため書きましょう.
再帰でTLE
が出るときはいったん書いてみる.
import sys
sys.setrecursionlimit(10000)
標準入力
様々な形式の入力が指定される.
1行だけ
# atcoder → 'atcoder'
S = input()
# atcoder → ['a', 't', 'c', 'o', 'd', 'e', 'r']
S = list(input())
# 1 2 3 4 → ['1', '2', '3', '4']
N = input().split()
# 1 2 3 4 → [1, 2, 3, 4]
N = list(map(int, input().split()))
複数行
# 2
# at
# coder
# → ['at', 'coder']
N = int(input()) # 行数
input_list = [input() for i in range(N)] # 入力行
行数指定なし
ユーザーがCtrl+C
とか<EOF>
を入力したときを終了とするようなやつ.
(某社のWebテストの入力形式がこれで爆死しました)
input
> 2021-06-05 get 100
> 2021-06-06 set 50
> 2021-06-07 get 150
> Ctrl+C
逐次処理パターン
while True:
try:
# 文字列入力の場合
input_list = list(input().split())
# 数字入力の場合
# input_list = list(map(int, input().split()))
# 逐次処理を記述
except:
# 処理ができなくなったら終了処理
break # もしくはquit(), os.exit()
リストに追加パターン
input_list = []
while True:
try:
# 文字列入力の場合
input_list.append(list(input().split()))
# 数字入力の場合
# input_list.append(list(map(int, input().split())))
except:
# 処理ができなくなったら終了処理
break
# ~以降の処理を記述
print(input_list)
# [['2021-06-05', 'get', '100'],
# ['2021-06-06', 'set', '50'],
# ['2021-06-07', 'get', '150']]
標準出力
print()関数を使う.
入力例
S = 'aiueo' # str
N = 5 # int
M = 10 # int
そのまま
print(S) # 一般的にみるやつ
print(S, end='\n') # 上と同じ意味
# aiueo
# aiueo
末尾指定
print(S, end='') # 改行しない
print(S, end=';') # 末尾に;を出力, 改行しない
# aiueoaiueo;
intとstr
print(S, N+M)
# aiueo 15
print(S+str(N+M))
# aiueo15
print(S+N+M)
# これはエラー×
# str型とint型の足し算になるため
リストの中身を一文字空けて
print(' '.join([S, S, S]))
# aiueo aiueo aiueo
空のDPを作成
DP(動的計画法)の問題では,空のリストを用意して結果を格納することがよくあります.
フラグの管理や探索アルゴリズムなどに使えるかと.
Nは入力サイズなど
# [0, 0, ..., 0, 0] 0で初期化
dp = [0 for i in range(N)]
# [[], [], ..., [], []] 空のリストのリスト
dp = [[] for i in range(N)]
# [[0, 0, ..., 0], [0, 0, ..., 0], ..., [0, 0, ..., 0]]
# 0で初期化したリストのリスト
dp = [[0 for i in range(N)] for i in range(N)]
などなど用法用量に合わせて.
リスト内の和
dpに登録したフラグ(存在:1, 無し:0)を数えたりするときに使えそう
# 例えば
# 処理結果 dp = [0, 1, 0, 0, 1, 1, 0] 等
print(sum(dp))
# 3
リスト内最大,最小
# 例えば
# 処理結果 dp = [2, 1, 3, 9, 4, 8] 等
print(max(dp))
# 9
print(min(dp))
# 1
おわりに
ビギナーもビギナーです.同じような記事もあると思います.
備忘録なので許してください.なんでm...
**Tips
**などあればぜひ教えてください!
そのうち更新します.
それでは