目次
今日行ったこと
・AtCoder Beginners Selectionの続きを3問解く
以下を解いた。といっても最初の2問は解説見て理解しながら写経みたいになっていた。
・ABC081B - Shift only
・ABC087B - Coins
いざ実践と思いこっちは自分で0から書いてみた。(エラー出た部分だけ調べたりした。)
・ABC083B - Some Sums
N, A, B = map(int, input().split())
sum = 0
# 1からNまでの数字を網羅するfor文
for i in range(N+1):
# Nの桁数を測る
if (N+1)/10 == 0:
if A <= N+1 and N+1 <= B:
sum = sum + N+1
elif (N+1)/100 == 0 and (N+1)/10 >= 1:
k = (N+1)/10
l = (N+1)%10
if A <= k+l and k+l <= B:
sum = sum + N+1
elif (N+1)/1000 == 0 and (N+1)/100 >= 1:
k = (N+1)/100
l = (N+1)/10
m = (N+1)%10
if A <= k+l+m and k+l+m <=B:
sum = sum + N+1
elif (N+1)/10000 == 0 and (N+1)/1000 >= 1:
k = (N+1)/1000
l = (N+1)/100
m = (N+1)/10
n = (N+1)%10
if A <= k+l+m+n and k+l+m+n <=B:
sum = sum + N+1
print(sum)
結果は通らず、眠気の限界が来たのであきらめる。。。
この実装だけでわからないことが何個かあったから、次は以下調査したい。
・int(input())じゃ数値を受け取れなかった理由(mapを使う理由?)
・各桁の上手な取り方(10とか100とかの割った数で取るしか思いつかず)
・mapとlistの使い方
・AtCoder Beginner Contest 376をチラ見
企業のコーディングテストとかで例えられるABC問題がどのくらいの難易度なのか?を知りたくてチラ見してみた。
以下感想。
・A - Candy Button
頑張れば解けそう。
ボタンを押して飴貰える→数値0に初期化して次押すときC秒経っていなかったら初期化せず次のTに遷移~
という流れが想像できたため。
・B - Hands on Ring (Easy)
ルールを理解するのに2分ぐらいかかった。
いわゆる探索系なんだろうけど、さっぱり実装イメージが思いつかず。Lが5だからR動かすときに5経由しちゃダメってどう実装で表すのかがわからない。。。
・C - Prepare Another Box
ルールを理解するのに4分ぐらいかかった。
Bとよりかは解けそうなイメージあり。Aの最小値>Bの最小値だったらもう終わりで、それ以外の場合は比較しまくってなんとか。。。みたいな実装イメージになった。
解説動画あるっぽいし、時間あるときに見てみたい。(解説手厚いの凄い)
https://atcoder.jp/contests/abc376/editorial
次やりたいこと
・ABC083B - Some Sumsの復習
・この記事に書いたわからない部分を調査する
・AtCoder Beginners Selectionを全問解く(残り6問)
・AtCoder Beginner Contest 376の解説動画を見てみる
・AWS Certified Cloud Practitionerの受験に向けて勉強
所感
ちょっとずつ分からないことが分かるようになってきた。(無知の知)
いわゆるアルゴリズムのテンプレを覚えて、それを問題の解法に当てはめていく形になっていくのだろうか?
あと、どこまでやったらコンテストチャレンジするかの目安も決めたい。(当分先だろうけど)