処理まとめ
Atcoderの問題を解いている時によく使うプログラムを共有します。
最後は問題もあるので是非解いてみて下さい。
数値で入力受け取り
数値で入力を受け取る場合は以下のコードです。
# 数値で受け取る
num = int(input())
実行結果
二つの数値を半角区切りで受け取るコード
B, G = map(int, input().split())
文字列で入力受け取り
以下のコードになります。
# 文字列で受け取る
s = input()
実行結果
半角スペースで数値受け取り
以下のコードになります。
# 半角スペースで数値受け取り
num_lst = list(map(int, input().split()))
実行結果
evev_lst = [i for i in range(1, 10 + 1) if i % 2 == 0] # 偶数
old_lst = [i for i in range(1, 10 + 1) if i % 2 != 0] # 奇数
合計を計算する処理
sum_lst = [i for i in range(1, 10 + 1)]
print(sum(sum_lst))
入力した数値の合計を求める処理
n = int(input())
sum_lst = [i for i in range(n + 1)]
print(sum(sum_lst))
半角スペースで文字列受け取り
以下のコードになります。
moji_lst = list(map(str, input().split()))
実行結果
大文字、小文字のアルファベット取得
A~Zまでの大文字のアルファベットを取得するコードは以下になります。
# アルファベットを取得(大文字)
alphabet_lst_upper = [chr(ord("A")+i) for i in range(26)] # アルファベット格納
A~Zまでの小文字のアルファベットを取得するコードは以下になります。
alphabet_lst_low = [chr(ord("a")+i) for i in range(26)] # アルファベット格納
実行結果
文字列が大文字か小文字を判断するプログラムは以下になります。
# 1文字目が大文字か判断
if user_input[0].isupper():
print('大文字')
else:
print('小文字')
# 最後の文字が小文字か判断
if user_input[-1].islower():
print('小文字')
else:
print('大文字')
盤面を受け取る処理
盤面をプログラムで受け取るコードは以下になります。
# 盤面を取得するコード
row, column = map(int, input().split()) # row(行) column(列)
ans = [['.' for _ in range(column)] for _ in range(row)]
for i in range(row):
for j in range(column):
print(ans[i][j], end='')
print()
実行結果
Atcoderの問題
実際に最後は解いてみます。
問題は以下になります。最後に解答を貼っているので解けたらみて下さい。
\displaylines{問題文\\
整数からなる数列が
N 個あります。\\
i(1≤i≤N) 番目の数列は
L
i
項からなり、
\\i 番目の数列の第
j(1≤j≤L
i
) 項 は
a
i,j
です。\\
Q 個のクエリが与えられます。\\
k(1≤k≤Q) 番目のクエリでは、\\整数
s
k
,t
k
が与えられるので、\\
s
k
番目の数列の第
t
k
項を求めてください。\\}
解答コード
n, q = map(int, input().split())
n_lst = [list(map(int, input().split()))for _ in range(n)] # 入力を二次元配列で受け取る。
ans_lst = []
for _ in range(q):
n_1, q_1 = map(int, input().split())
ans = n_lst[n_1 - 1][q_1] # 二次元配列にアクセスする。
ans_lst.append(ans)
print(n_lst)
for ans_value in ans_lst:
print(ans_value)