ABC の A, B 問題をコツコツ解く日々.
油断すると A 問題に足元をすくわれる.
現在の目標
- 今年の10月内に茶色を取得する
-
ABS の問題を全部解く(完了) - ABC の A, B 問題を全部解く←イマココ
- 年内に緑色を取得する
- ABC の C, D 問題を全部解く
- APG4b で C++ にも手を出す
#今日の問題
ABC003B - AtCoderトランプ
https://beta.atcoder.jp/contests/abc003/tasks/abc003_2
結果
answer1.py
#coding: utf-8
import sys
S = input()
T = input()
lis_str = ["a", "t", "c", "o", "d", "e", "r"]
for i in range(len(S)):
if S[i] == T[i]:
continue
elif (S[i]=="@") and (T[i] in lis_str):
continue
elif (T[i]=="@") and (S[i] in lis_str):
continue
else:
print("You will lose")
sys.exit()
print("You can win")
# 実行時間:17 ms
# メモリ :3064 KB
# コード長:383 Byte
# 得点 :100/100
解けるには解けました. いつものようにほかの人の解答を参照したら, やはりもっとスマートな方法がありました.
answer2.py
#coding: utf-8
S = input()
T = input()
ans = 'You can win'
for a,b in zip(S,T):
if a!=b and a+b not in ('@a@t@c@o@d@e@r@'):
ans = 'You will lose'
break
print(ans)
# 実行時間:19 ms
# メモリ :2940 KB
# コード長:192 Byte
# 得点 :100/100
なるほど, と思ったポイントは下記3点.
- zip の使い方
- 特定の条件時に ans を上書きするという発想
- "if a!=b and a+b not in ('@a@t@c@o@d@e@r@'):"
1つ目の zip は今後も使えそうですね.
2つ目の書き方は好みの問題かもしれませんが, 条件式が減らせるかもしれないので覚えておきます.
そして最後の判定は, 思いついたら気持ちよさそうですね. S と T から一文字ずつ抜き出して, 「@ + "atcoder" のいずれかの文字」になっている, もしくは, 「"atcoder" のいずれかの文字 + @」になってるかどうかは、たしかにこれで調べられますね.
うーむ, 道のりは長い. けど, 前向きにがんばろう.
#明日やること
- ABC を解き続ける.