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

# 処理まとめ
Atcoderの問題を解いている時によく使うプログラムを共有します。
最後は問題もあるので是非解いてみて下さい。
## 数値で入力受け取り
数値で入力を受け取る場合は以下のコードです。
```python
# 数値で受け取る
num = int(input())
```
### 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/7f644227-43c4-c6fd-5fba-ef514b054860.png)

二つの数値を半角区切りで受け取るコード
```python
B, G = map(int, input().split())
```

## 文字列で入力受け取り
以下のコードになります。
```python
# 文字列で受け取る
s = input()
```
### 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/3abd86d4-8627-9288-361e-86f0cfa3cf98.png)

## 半角スペースで数値受け取り
以下のコードになります。
```python
# 半角スペースで数値受け取り
num_lst = list(map(int, input().split()))
```
### 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/db41a63b-e031-4483-e8db-b128c42e2d25.png)
<font color="#FF0000">偶数,奇数だけを受け取る処理。</font>
```python
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] # 奇数
```
<font color="#FF0000">偶数</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/2f7ea20f-44a2-4ed0-ebdf-f79d4e9bcbb8.png)
<font color="#FF0000">奇数</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/9dcc96df-375a-b09c-32bc-3452e9ae4731.png)

<font color="#FF0000">合計を計算する処理</font>
```python
sum_lst = [i for i in range(1, 10 + 1)]
print(sum(sum_lst))
```

<font color="#FF0000">入力した数値の合計を求める処理</font>
```python
n = int(input())
sum_lst = [i for i in range(n + 1)]
print(sum(sum_lst))
```

<font color="#FF0000">合計</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/fba99f5c-1977-7002-0406-1edb68e15699.png)



## 半角スペースで文字列受け取り
以下のコードになります。
```python
moji_lst = list(map(str, input().split()))
```
### 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/5f0f717d-71a6-d026-8411-778ae20c04e9.png)

## 大文字、小文字のアルファベット取得
A～Zまでの大文字のアルファベットを取得するコードは以下になります。
```python
# アルファベットを取得（大文字）
alphabet_lst_upper = [chr(ord("A")+i) for i in range(26)] # アルファベット格納
```
A～Zまでの小文字のアルファベットを取得するコードは以下になります。
```python
alphabet_lst_low = [chr(ord("a")+i) for i in range(26)] # アルファベット格納
```
### 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/f72e7aab-8c07-3254-c18f-01fd1ab80063.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/fcd42c5a-18f8-9cca-b20c-50bab56add3b.png)
文字列が大文字か小文字を判断するプログラムは以下になります。
```python
# 1文字目が大文字か判断
if user_input[0].isupper():
    print('大文字')
else:
    print('小文字')
# 最後の文字が小文字か判断
if user_input[-1].islower():
    print('小文字')
else:
    print('大文字')
```
## 盤面を受け取る処理
盤面をプログラムで受け取るコードは以下になります。
```python
# 盤面を取得するコード
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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/30682592-5156-fa60-1592-b694f4483581.png)

## Atcoderの問題
実際に最後は解いてみます。
問題は以下になります。最後に解答を貼っているので解けたらみて下さい。
```math
\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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/bb5911da-ff27-d3ca-ebab-c2a2efaadf48.png)

### 解答コード
```python
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)
```