Sky株式会社プログラミングコンテスト2023(AtCoder Beginner Contest 289)の解説記事です。
目次
ABC289 A – flip
問題
問題文の要約は以下の通りです。
問題の要約
0
と 1
の 2 種類の文字からなる文字列 s が与えられたとき、s に含まれる 0
を 1
に、1
を 0
に置き換えた文字列を出力せよ。
制約
・s の長さは 1 以上 10 以下
・s は0
と 1
の 2 種類の文字からなる
入力
s
出力
答えを出力せよ。
解法1
1文字ずつ0
を 1
に、1
を 0
に置き換える。
解説
まず入力s
を受け取ります。
s=input()
for
文をsの長さまでループさせます。
for i in range(len(s)):
s
が0
であれば1
を出力します。
if s[i]=='0':
print(1, end='')
s
が1
であれば0
を出力します。
else:
print(0, end='')
解答
s=input()
for i in range(len(s)):
if s[i]=='0':
print(1, end='')
else:
print(0, end='')
文字列の長さを考えずに1文字ずつ取り出す方法もあります。
s=input()
for i in s:
if i=='0':
print(1, end='')
else:
print(0, end='')
解法2
replace
を用いる。
解説
Pythonではある文字を別の文字に置き換えるreplace
が用意されています。
まず、0
をx
に置き換え、1
を0
に置き換え、最後にx
を1
に置き換えると、0
を 1
に、1
を 0
に置き換えたことになります。
s.replace('0', 'x').replace('1', '0').replace('x', '1')
最初に0
を1
に置き換えてしまうと、次に1
を0
に置き換えた際にすべて0
になってしまうのでちゅいいしましょう。
解答
s = input()
print(s.replace('0', 'x').replace('1', '0').replace('x', '1'))
解答を1行にまとめると次のようになります。
print(input().replace('0', 'x').replace('1', '0').replace('x', '1'))