AtCoder ABC147
AtCoder ABC147解いた分だけまとめ。
今回はABの2完。 Cはbit全探索というやつらしい。蟻本見ないとだな。
ということで、今回でやっと灰色の半分まで来ました。
最近の精進具合はこんな感じ。9月にA問題が埋まっていて、今はB問題を練習中。
当分はAB瞬殺に重点を置こうと思っている。
早く茶色になりたい。
AtCoder Problems役立つのでおすすめ。
目次
A. Blackjack
A1, A2, A3の和で場合分けするだけなので、瞬殺する。
#coding:utf-8 a, b, c = map(int, input().split()) if a + b + c >= 22: print('bust') else: print('win')
B. Palindrome-philia
文字列が偶数の場合と奇数の場合で分ける
- 偶数
半分に分けて、後半を逆順にしておく。前半とそれを比較して違う部分をカウント - 奇数
真ん中から前と後ろに分けて真ん中は無視。あとは前半と一緒。
スライス操作で位置調整に手間取る。
たまたま文字列操作を多くやっていたけど本番だと焦った。
逆順にする時はスライスで簡単にできる。
#逆順にする s = list(input()) s_reverse = s[::-1]
実際に書いたものがこちら
#coding:utf-8 s = list(input()) n = len(s) ans = 0 #文字の長さが偶数の時、前半と後半の逆の文字列を比較する if n % 2 == 0: sf = s[0:int(n/2)] sb = s[int(n/2):] sb_r = sb[::-1] #print(sf, sb_r) for i in range(0, int(n/2)): if sf[i] != sb_r[i]: ans += 1 #奇数の時は、真ん中を無視してそれ以外の前半・後半の逆の文字列を比較する else: sf = s[0:int(((n-1)/2))] sb = s[int(((n-1)/2)+1):] sb_r = sb[::-1] #print(sf, sb_r) for i in range(0, int((n-1)/2)): if sf[i] != sb_r[i]: ans += 1 print(ans)
引き続き頑張りましょ。