14th, 735.75pts, +2/0 challenge
Volatility ?->394
前回-25ptsを取ってDiv2に落ちたのですが、よい順位をとれたのでDiv1に復帰できました。
250: LeftAndRightHandedDiv2
右利きの人と左利きの人が連続した椅子に座っている。
右利きの人の左側に左利きの人がいると肘がぶつかってしまう。
肘がぶつかってしまうペアの数を答える。
入力から'RL'(右左)の順に並んでいる箇所を数えるだけ。
class LeftAndRightHandedDiv2: def count(self, S): return S.count('RL')
500: EmoticonsDiv2
ある到達目標の顔文字数が与えられる。
顔文字数1からスタートして、現在の文字列をクリップボードにコピー、現在の文字列にクリップボードの文字列を足す、の2つの操作が可能な時、最小で何回の操作で目的の顔文字数に到達するかを求める。
到達目標の顔文字数を素因数分解っぽく割っていって、割るのに使った素数の値の総和が操作の回数になります
- \(1000 = 2^3\times5^3\)なら操作回数は\(2 \times 3 + 5 \times 3 = 21\)
class EmoticonsDiv2: def printSmiles(self, smiles): count = 0 for i in xrange(2, smiles + 1): while smiles % i == 0: count += i smiles /= i return count