改めて自分が初心者なのかどうかを検証する意味で「AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~」を解く。これができれば、初心者よりちょっと一歩先にいることは確かだ。
問題1
全体的に長くなるので割愛。要約されたものが↑のリンクに記載されている。
回答
a, b = map(int, input().split())
if a*b % 2 == 0:
print("Even")
else:
print("Odd")
備考
- これはやったことある。提示されているものとアルゴリズムは同じだから問題ないと思う。
問題2
回答
s = input()
k = 0
for i in s:
i = int(i)
k += i
print(k)
備考
- これも比較的簡単にできた。
- ただし、提示された回答を見ると、forを使ってない。確かにforがなくてもかける。この場合だと全探索でいける。確かにforの方が汎用性は高いが、汎用性を志向する必要はない。問題に対して過不足なく処理することができれば、それで十分
問題3
回答
import numpy as np
n = int(input())
a = list(map(int, input().split()))
a = np.array(a)
k = 0
while np.all(a % 2 == 0):
a = a / 2
k += 1
print(k)
備考
- 初めてnumpyを使った。pythonだけでやると、a[i]みたいな感じでforループがかなり多くなって、実行時間が超過した。ライブラリ便利だな。
- 一方で描き終わったタイミングで気づいたけど、pythonだけでもanyである程度同じように書ける。やっぱり知っていることは大事。そしてその知識と動作を正確に結びつけることが重要。