LoginSignup
2
3

【Python】Atcoderでよく使う処理まとめてみた

Last updated at Posted at 2024-02-06

処理まとめ

Atcoderの問題を解いている時によく使うプログラムを共有します。
最後は問題もあるので是非解いてみて下さい。

数値で入力受け取り

数値で入力を受け取る場合は以下のコードです。

# 数値で受け取る
num = int(input())

実行結果

image.png

二つの数値を半角区切りで受け取るコード

B, G = map(int, input().split())

文字列で入力受け取り

以下のコードになります。

# 文字列で受け取る
s = input()

実行結果

image.png

半角スペースで数値受け取り

以下のコードになります。

# 半角スペースで数値受け取り
num_lst = list(map(int, input().split()))

実行結果

image.png
偶数,奇数だけを受け取る処理。

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] # 奇数

偶数
image.png
奇数
image.png

合計を計算する処理

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))

合計
image.png

半角スペースで文字列受け取り

以下のコードになります。

moji_lst = list(map(str, input().split()))

実行結果

image.png

大文字、小文字のアルファベット取得

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)] # アルファベット格納

実行結果

image.png
image.png
文字列が大文字か小文字を判断するプログラムは以下になります。

# 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()

実行結果

以下の画像は5行の10列を表示したコードになります。
image.png

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
​
  項を求めてください。\\}

image.png

解答コード

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)
2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3