AtCoder ABC 202 B – 180° Python解説

スポンサーリンク

180°

0、1、6、8、9 からなる文字列 S が与えられます。
S を 180 度回転したものを出力してください。すなわち、S に次の操作を施してできる文字列を出力してください。
S を反転する。
0 を 0 に、1 を 1 に、6 を 9 に、8 を 8 に、9 を 6 に変換する。

AtCoder Beginner Contest 「180°」

0を0に、1を1に、6を9に、8を8に、9を6に、とありますが、実際は6, 9の場合にしか変換は発生しません。なので、文字列Sを反転して、条件文で文字が6, 9の場合分けをして処理をしていきます。

s = input()

s = s[::-1]
ans = ""

for i in s:
    if i == "6":
        ans += "9"
    elif i == "9":
        ans += "6"
    else:
        ans += i
        
print(ans)

s = s[::-1]で文字列は反転するので、次に、if文を使って、文字が6, 9の場合はそれぞれ9, 6に変換してansに足していきます。最後にansを出力して完了です。

1つ注意点として、文字列の連結に+=を使うと処理が遅くなる可能性があります。B問題なので制限時間に十分間に合いますが、処理速度を求めたいときはjoinを使いましょう。

s = input()

s = s[::-1]
a = []

for i in s:
    if i == "6":
        a.append("9")
    elif i == "9":
        a.append("6")
    else:
        a.append(i)
        
print("".join(a))