こちらは「Plus One」のPythonによる解答例となっております。この問題は、整数の配列が与えられたとき、その整数に1を足した結果を返す問題です。
問題
非負整数が格納された配列 digits が与えられた場合、その整数に1を足した結果を配列で返します。各要素は1桁の数値であるとします。
digits
の長さは、1以上100以下です。digits
の要素は、0以上9以下の整数です。digits
の最上位の整数が0であることはありません。
解法
この問題は、反転処理を用いた1つのアプローチがあります。配列を反転し、一桁ずつ足していき、最後に再度反転して返します。
アルゴリズムの概要を以下に述べます。
- 配列を反転します。
- 配列の先頭要素に1を足します。
- 各要素を10で割り、余りを配列の次の要素に足します。余りが0でない場合は4に進みます。
- 配列の次の要素に1を足します。
- 3と4を繰り返し、最後に配列を再度反転して返します。
Pythonコード
以下のコードが、「Plus One」を解くためのPythonプログラムとなります。
### Function ##################################################################
def solve(num=0):
solver = Solution().plusOne
if 1 <= num <= Input().input: id_LIST = [num]
else: id_LIST = [id+1 for id in range(Input().input)]
for id in id_LIST:
data = Input(id)
ans = solver(data.digits)
result = "OK" if ans==data.ans else "NG"
print(f"[{str(id).zfill(3)}] {result}, {ans}, {data.ans}")
### Clas