여름의 서재

[SWEA] 4366_정식이의 은행업무 본문

알고리즘/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))
Comments