알고리즘/SWEA
[SWEA] 4366_정식이의 은행업무
엉아_
2021. 10. 8. 13:17
728x90
📕 문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
💡 풀이법
1. 이진수를 돌면서 0을 1로, 1을 0으로 모두 바꿔보면서 원래 숫자가 될 수 있는 경우의 수를 originals 리스트에 담는다.
2. 그다음 삼진수를 돌며 0일땐 1,2로 1일땐 0,2로 2일땐 0,1로 바꿔보면서 바꾼 숫자가 originals에 있는지 확인하고 있으면 그 값을 return한다.
def bank(jinsu2, jinsu3):
originals = []
for i in range(1, len(jinsu2)):
original = list(jinsu2)
if jinsu2[i] == '0':
original[i] = '1'
else:
original[i] = '0'
originals.append(int(''.join(original), 2))
nums = ['0', '1', '2']
for i in range(len(jinsu3)):
for j in nums:
original = list(jinsu3)
if original[i] != j:
original[i] = j
original = int(''.join(original), 3)
if original in originals:
return original
T = int(input())
for tc in range(1, T+1):
jinsu2 = input()
jinsu3 = input()
num = bank(jinsu2, jinsu3)
print('#{} {}'.format(tc, num))