https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


아이디어

  1. 입력 받은 2진수를 하나의 원소를 바꿔 10진수로 변환하여 set에 집에 넣는다.
  2. 예를 들어 1010이면 처음엔 1을 0으로 바꿔 0010을 10진수로 바꿔 set에 넣는다.
  3. 같은 방식으로 3진수를 요소가 0이면 1, 2로 바꾸고 10진수로 만들어준다.
  4. 3진수에서 바꾼 10진수가 set안에 있다면 출력하고 종료한다.

 


풀이

def solve():
    tmp = '012'
    for k in range(3):
        for i in range(len(tri_num)):
            tri_num_copy = tri_num[:]
            if tri_num[i] != tmp[k]:
                tri_num_copy[i] = (int(tmp[k])+1)%3
                val2 = int(''.join(map(str, (tri_num_copy))), 3)
                if val2 in bin_ten_set:
                    return print(f'#{tc}', val2)



T = int(input())
for tc in range(1, T+1):
    tmp_bin = input()
    tmp_tri = input()
    bin_num = []
    tri_num = []
    for _ in range(len(tmp_bin)):
        bin_num.append(int(tmp_bin[_]))
    for _ in range(len(tmp_tri)):
        tri_num.append(int(tmp_tri[_]))


    bin_ten_set = set()

    for i in range(len(bin_num)):
        # bin_num_copy = bin_num[:]
        if bin_num[i] == 0:
            change_bin = bin_num[:i]+[1]+bin_num[i+1:]
            val = ''.join(map(str, (change_bin)))
            bin_ten_set.add(int(val, 2))
        elif bin_num[i] == 1:
            change_bin = bin_num[:i] + [0] + bin_num[i + 1:]
            val = ''.join(map(str, (change_bin)))
            bin_ten_set.add(int(val, 2))

    solve()
복사했습니다!