読者です 読者をやめる 読者になる 読者になる

水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

SRM 660 Div.2 Easy(2015/06/12)

TopCoder Python 競技プログラミング

TopCoderの参加の仕方わからんないや…(白目)ってなっているうちに締め切られていた.
知らないうちにWEBからAraneに行けるようになっているようだ….よくわからんJavaのソフト起動しなくて住むのはタスカル.

で,仕方がないから試しに一問解きました.practiceにあった問題.

問題

http://community.topcoder.com/stat?c=problem_statement&pm=13814

文字列と置き換え可能回数が提示され,文字列を回転させつつ,文字列を置き換えた時に辞書順最小となるようなものを求める問題.
まず.文字列のシフトを考え,そのあと文字列の置き換え.辞書順最小なので"a"で置き換えればよいが,"a"を"a"で置き換えてもしかたがないので,"a"だったら次を置き換えるようにする.
こうして文字列をシフトさせながらすべて試すことで答えが得られる.

で,TopCoderの問題を解いてみた感想なのですが,やっぱり英語なのが個人的にはキツイです(ニュアンスの理解ができない)
問題文がわからない上に,入出力もわからないので,割りと死ねてます.これは良くない.

ちょっと過去問を見直しながら,英語の勉強でもします….

# Cyclemin Easy, 250
class Cyclemin:
    def bestmod(self, s, k):
        best = s
        for i in range(len(s)):
            temp = s[i:] + s[:i]
            for j in range(k):
                while temp[j] == "a":
        			j += 1
        			if j > len(s):
        				break
                temp = temp[:j] + "a" + temp[j+1:]
            if best > temp:
                best = temp
        return best

どうでも良いが,Pythonとだけ書いてあったので若干不安だったけれども,普通にPython3書けて良かったです(僕はPyhton2かけないので)