#はじめに
どーも、最近競プロをはじめた新人です。
@drkenさんの記事AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~に取り上げられている問題10問をPython3で解いてみました.AtCoderの入門として、非常に素晴らしい記事なので、興味のある方はぜひチェックしてください.
問題の詳細と一般的な解法は元の記事を参照してください.
###第1問 ABC 086 A - Product
a, b = map(int, input().split())
if a*b % 2 == 0:
print("Even")
else:
print("Odd")
簡単なif-elseで解きました.
###第2問 ABC 081 A - Placing Marbles
print(input().count("1"))
stringのcountを使えば楽.
###第3問 ABC 081 B - Shift Only
N = input()
A = list(map(int, input().split()))
cnt = 0
while all(a%2==0 for a in A):
A = [a/2 for a in A]
cnt += 1
print(cnt)
内包表記を使いました.
###第4問 ABC 087 B - Coins
A = int(input())
B = int(input())
C = int(input())
X = int(input())
res=0
for i in range(A + 1):
for j in range(B + 1):
for k in range(C + 1):
if 500*i + 100*j + 50*k == X:
res += 1
print(res)
三重ループなので内包表記より全探索を使いました.
###第5問 ABC 083 B - Some Sums
N, A, B = map(int, input().split())
res = 0
for i in range(N+1):
if A <= sum([int(s) for s in str(i)]) <= B:
res += i
print(res)
intとstringの相互変換を活用しました.
###第6問 ABC 088 B - Card Game for Two
N = int(input())
l = list(map(int, input().split()))
l.sort(reverse=True)
print(sum(l[0::2]) - sum(l[1::2]))
sort来ましたね.
###第7問 ABC 085 B - Kagami Mochi
N = int(input())
l = sorted([input() for _ in range(N)])
print(len(set(l)))
sortとsetの連携です.
###第8問 ABC 085 C - Otoshidama
N, Y = map(int, input().split())
res = (-1, -1, -1)
for x in range(N + 1):
for y in range(N + 1 - x):
if N - x - y >= 0 and 10000*x + 5000*y + 1000*(N - x - y) == Y:
res = (x, y, N - x - y)
print(res[0], res[1], res[2])
二重ループの例ですが、この解答はあまり好きではありません.
###第9問 ABC 049 C - Daydream
given = ["dreamer", "dream", "eraser", "erase"]
S = input()
while len(S) > 0:
judge = [S.endswith(i) for i in given]
if any(judge):
target = given[judge.index(True)]
S = S[:-len(target)]
if len(S) == 0:
print("YES")
break
else:
print("NO")
break
ちょっと難しいですね、DPを使ったら楽かもしれません.
###第10問 ABC 086 C -Traveling
N = int(input())
for _ in range(N):
t, x, y = map(int, input().split())
if x + y > t or (t + x + y)%2 != 0:
print("No")
quit()
print("Yes")
元記事の解説を参照しました.主に偶数と奇数の性質を使いました.
#終わりに
入門なので、それほど複雑なコードではありません.他の言語と比べて,Pythonが遅いと言われますが、それほど大した問題ではないと思います.速度の方で気になる方もご心配なくPythonを使っていただければ大丈夫だと思います.