Algorithm Problem/Python

[python] SWEA - 4366. 정식이의 은행업무

deo2kim 2022. 3. 25. 23:12
반응형

🤔문제 해결

  • 주어진 진수를 한자리 씩 다른것으로 바꿔주기
    • 1101(2진수) => 0101, 1001, 1111, 1100
    • 1221(3진수) => 0221, 2221, 1021, 1121, 1201, 1211, 1220, 1222
  • 각 수에 대해서 10진수로 바꾸고 리스트(or 딕셔너리)에 넣기
    • 2진수 먼저해서 다 넣어두고
    • 3진수 변환할 때마다 이미 있는지 체크해서
    • 있으면 break
  • 답 출력

 

💻소스 코드

def convert_decimal(standard, num):
    converted_number = 0
    for i in range(len(num)):
        converted_number += int(num[i]) * (standard ** (len(num) - i - 1))
    return converted_number


T = int(input())
for test_case in range(1, T + 1):
    answer = 0
    binary_number = input()
    trinary_number = input()

    guess_number_list = {}

    for i in range(len(binary_number)):
        for j in range(2):
            if binary_number[i] == str(j):
                continue

            wrong_number = str(j)
            changed_number = binary_number[:i] + wrong_number + binary_number[i + 1:]
            guess_number = convert_decimal(2, changed_number)
            guess_number_list[guess_number] = 1

    for i in range(len(trinary_number)):
        for j in range(3):
            if trinary_number[i] == str(j):
                continue

            wrong_number = str(j)
            changed_number = trinary_number[:i] + wrong_number + trinary_number[i + 1:]
            guess_number = convert_decimal(3, changed_number)
            if guess_number_list.get(guess_number):
                answer = guess_number
                break

    print(f'#{test_case} {answer}')

📕문제 확인

출처: SW Expert Academy

반응형