본문으로 바로가기

C059:パリティチェック

category TIL/Algorithm 2024. 4. 24. 23:37

あなたはデータ入力の作業を行っています。
この入力するデータは "0000" から "1111" までの 2 進数です。

このデータ入力の作業は単調でミスを起こしやすく困っています。
このため、入力するデータに対してある計算をし検証をすることにしました。

ここでは排他的論理和(xor) と呼ばれる計算を使って入力データのミスを検出しようとしました。
排他的論理和(xor) は各桁において、1 が奇数個あれば 1、そうでないならば 0 を出力します。

入力する N 個のデータに対して、排他的論理和(xor) を取って出力をしてください。
入力例 1 の場合は、各桁に対して以下のように計算されます。

 
入力される値

入力は以下のフォーマットで与えられます。

N
b_1
b_2
...
b_N
  • ・1 行目には、与えられる 2 進数の数 N が整数で与えられます。
  • ・続く N 行の i 行目 (1 ≦ i ≦ N) には、4 桁の 2 進数を示す文字列 b_i が与えられます。
  • ・入力は合計で N + 1 行となり、入力値最終行の末尾に改行が1つ入ります。

それぞれの値は文字列で標準入力から渡されます。標準入力からの値取得方法はこちらをご確認ください
期待する出力

N 個の 2 進数のデータに対して排他的論理和(xor) を取った結果を 4 桁の 2 進数で出力してください。
2 進数にした時に 4 桁未満になる場合は、0 を先頭に付け 4 桁にして出力してください。

出力の最後に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

  • ・2 ≦ N ≦ 50
  • ・各 i (1 ≦ i ≦ N) について、以下をみたす
  •  ・(b_i の長さ) = 4
  •  ・b_i は "0" または "1" で構成される文字列である
入力例1
2
0011
0110
出力例1
0101
入力例2
4
0001
0010
0100
1000
出力例2
1111

# 2
# 0011
# 0110
a=int(input())
int_list=[input() for i in range(a)]
# print(int_list)
count=[0]*4
for s in int_list:
    for i in range(4):
        if s[i]=="1" and count[i]==0:
            count[i]+=1
        elif s[i]=="1" and count[i]!=0:
            count[i]-=1
print(''.join(map(str, count)))

'TIL > Algorithm' 카테고리의 다른 글

C032:お得な買い物 ???  (0) 2024.04.26
C094:国民の税金  (0) 2024.04.25
C079:カードを集める  (0) 2024.04.23
C116:あたり棒の検査  (0) 2024.04.22
C148:戦闘シミュレーション  (0) 2024.04.20