set
에 중복없이 추가idx
의 수가 변할 일은 없기 때문에 0번 index
일 경우는 제외set
안에 존재한다면 해당 수가 정답📌 하드코딩 해버린 느낌이 없지않아 있다..
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
삼성은행의 신입사원 정식이는 실수를 저질렀다.
은행 업무가 마감되기 직전인 지금, 송금할 금액을 까먹고 말았다.
하지만 다행스럽게도 정식이는 평소 금액을 2진수와 3진수의 두 가지 형태로 기억하고 다니며,
기억이 명확하지 않은 지금조차 2진수와 3진수 각각의 수에서
단 한 자리만을 잘못 기억하고 있다는 것만은 알고 있다.
예를 들어 현재 기억이 2진수 1010과 3진수 212을 말해주고 있다면
이는 14의 2진수인 1110와 14의 3진수인 112를 잘못 기억한 것이라고 추측할 수 있다.
정식이는 실수를 바로잡기 위해 당신에게 부탁을 하였다.
정식이가 송금액을 추측하는 프로그램을 만들어주자.
( 단, 2진수와 3진수의 값은 무조건 1자리씩 틀리다. 추측할 수 없는 경우는 주어지지 않는다. )
for tc in range(1, int(input()) + 1):
binarys = input()
trinarys = input()
sub_set = set()
for idx, binary in enumerate(binarys):
if idx == 0: continue
else:
if binary == '1':
tmp = int(binarys[:idx] + '0' + binarys[idx + 1:], 2)
else:
tmp = int(binarys[:idx] + '1' + binarys[idx + 1:], 2)
sub_set.add(tmp)
for idx, trinary in enumerate(trinarys):
if trinary == '0':
tmp1 = int(trinarys[:idx] + '1' + trinarys[idx + 1:], 3)
tmp2 = int(trinarys[:idx] + '2' + trinarys[idx + 1:], 3)
elif trinary == '1':
tmp1 = int(trinarys[:idx] + '0' + trinarys[idx + 1:], 3)
tmp2 = int(trinarys[:idx] + '2' + trinarys[idx + 1:], 3)
else:
tmp1 = int(trinarys[:idx] + '0' + trinarys[idx + 1:], 3)
tmp2 = int(trinarys[:idx] + '1' + trinarys[idx + 1:], 3)
if tmp1 in sub_set:
answer = tmp1
break
elif tmp2 in sub_set:
answer = tmp2
break
print(f'#{tc} {answer}')