code = { '0001101': 0, '0011001': 1, '0010011': 2, '0111101': 3, '0100011': 4, '0110001': 5, '0101111': 6, '0111011': 7, '0110111': 8, '0001011': 9, } tc = int(input()) for idx in range(1, tc+1): n, m = map(int, input().split()) # 배열 받아오기 arr = [] binary = '' for n in range(n): temp = input() arr.append(temp) if not binary and '1' in temp: # 2진수가 있는 배열 저장 binary = temp p = m - binary[::-1].index('1') # 배열에서 마지막 1 찾기 (암호는 다 1로 끝남) binary = binary[p-56:p] # 2진수 범위만 딱 저장. 불필요한거 버려 number = [] for i in range(0, 56, 7): number.append(code[binary[i:i+7]]) # 암호코드에 맞는 번호 저장 odd = 0 # 홀수 자리 합 저장 even = 0 # 짝수 자리 합 저장 for i in range(8): # 검증코드 if i == 7: if (odd * 3 + even + number[i]) % 10 == 0: # 정상적인 암호코드면 print('#{} {}'.format(idx, odd + even + number[i])) # 암호코드들의 숫자 합 출력 else: # 비정상 적이면 print('#{} {}'.format(idx, 0)) # 0 출력 # 짝수자리 더하기 elif i % 2: even += number[i] # 홀수자리 더하기 else: odd += number[i]
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[Python] 5186. 이진수2 (0) | 2021.09.30 |
---|---|
[Python] 5185. 이진수 (0) | 2021.09.30 |
[Python] 5178. 노드의 합 (0) | 2021.09.24 |
[Python] 5177. 이진힙 (0) | 2021.09.24 |
[Python] 5176. 이진탐색 (0) | 2021.09.24 |