SW Expert Academy 1240번 단순 2진 암호코드 | Python
🔎 문제 설명
💙 D3
- 난이도 ★☆☆☆ - 구현
단순 구현이라 코드 작성이 어렵지 않았으나, 몇 가지 예외가 있어서 애를 먹었다. 댓글에서 힌트를 얻었다.
저같은분 있을 까봐 남겨둬요~ 앞에서부터 무조건 7개씩 끊으면 되는건줄 알았는데 꼭 그런 케이스만 있는건 아닙니다!
암호가 아닌 부분은 0으로 채워져 있다. 당연히 앞에서부터 무조건 7개씩 끊으면 될 줄 알았는데 이걸 고려하지 않으면 3/10 점을 받을 것이다..!
💻 내 코드
T = int(input())
for t in range(T):
N, M = map(int, input().split())
secrets = [input() for _ in range(N)]
answer = 0
def transform(secret: str):
signal = ['0001101','0011001','0010011','0111101',
'0100011','0110001','0101111','0111011',
'0110111','0001011']
numbers = []
for i in range(len(secret)//7):
sig = secret[7*i:7*(i+1)]
if sig in signal:
num = signal.index(sig)
numbers.append(str(num))
return ''.join(numbers)
def correct(nums):
nums = list(map(int, list(nums)))
odd, even = 0, 0
for idx, n in enumerate(nums):
if idx%2==0:
odd += n
else:
even += n
if (3 * odd + even)%10 > 0:
return 0
return sum(nums)
for secret in secrets:
if set(secret) != set('0'):
last = secret[::-1].index('1')
number = transform(secret[-last-56:-last])
answer = correct(number)
print(f'#{t+1}', answer)
💙 You need to log in to GitHub to write comments. 💙
If you can't see comments, please refresh page(F5).