문제 링크: https://algospot.com/judge/problem/read/HAMMINGCODE
암호화된 코드를 받아 암호화 되기 전의 코드를 출력하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#hammingcode
import sys
for i in range(case):
encode = []
for j in range(7): # 전체를 받으면 엔터키까지 받아져서 코드 크기만큼만 써야 함
syn0 = encode[0]^encode[2]^encode[4]^encode[6] # parity bit 구하기
syn1 = encode[1]^encode[2]^encode[5]^encode[6]
syn3 = encode[3]^encode[4]^encode[5]^encode[6]
if syn0+syn1+syn3 != 0: # parity bit 들의 합이 0이 아니면, 즉 에러가 생겼다면
syndrome = str(syn3) + str(syn1) + str(syn0) # syndrome 구하기
error = int(syndrome, 2)-1 # 문제가 있는 비트의 위치 찾기
if encode[error] == 0: # 비트 바꾸기
encode[error] = 1
else:
encode[error] = 0
result = str(encode[2]) + str(encode[4]) + str(encode[5]) + str(encode[6]) # 결과 출력
print(result)
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
코드는 이렇다.
'코테용 문제풀이 > 알고스팟' 카테고리의 다른 글
알고스팟 divisibility 문제 파이썬으로 풀기 (0) | 2019.08.27 |
---|---|
알고스팟 tiling2 문제 파이썬으로 풀기 (0) | 2019.08.26 |
알고스팟 jeonglibe 문제 파이썬으로 풀기 (0) | 2019.08.12 |
알고스팟 goodset 문제 파이썬으로 풀기 (0) | 2019.08.11 |
알고스팟 anagram 문제 파이썬으로 풀기 (0) | 2019.08.11 |