【Python】AtCoder abc124_c Coloring Colorfully
たぶんC問題では簡単な部類。
- 最初が0なら01010101...
- 最初が1なら10101010...
と必ずなるので、あとはそれとの違いがいくつあるかということを検出すれば良い。
まずテストコード。
import unittest import main class MainTest(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_1(self): self.assertEqual(1, main.main("000")) def test_2(self): self.assertEqual(3, main.main("10010010")) if __name__ == "__main__": unittest.main()
そして実装。
def main(input_str): input_list = list(input_str) count = 0 if input_list[0] == "0": ans = [] // [0,1,0,1,...]の配列を作る for i, _ in enumerate(input_list): if i % 2 == 0: ans.append("0") else: ans.append("1") for i, _ in enumerate(input_list): if input_list[i] != ans[i]: // 違えば+1 count += 1 else: ans = [] // [1,0,1,0,...]の配列を作る for i, _ in enumerate(input_list): if i % 2 == 0: ans.append("1") else: ans.append("0") for i, _ in enumerate(input_list): if input_list[i] != ans[i]: // 違えば+1 count += 1 return count if __name__ == "__main__": input_str = input() print(main(input_str))
どうみてもDRY化する余地があるがACしたので良し。